Wolf (он же Frog) CMS - движок сайта для гиков
В данной заметке я постарался поделиться с общественностью моими впечатлениями о легковесном и достаточно интересном движке для сайта — Wolf CMS (который является форком Frog CMS). Ведь именно на этом движке в настоящее время работает данный сайт. Почему именно этот движок я выбрал для себя, и чем он будет интересен гикам?
Начнем с небольшого экскурса в историю, исключительно для того, чтобы разобраться какая связь между Wolf и Frog CMS. Изначально CMS, о которой идет речь, называлась Frog CMS и была создана Philippe Archambault. Первая публичная версия датирована 5 января 2007 г. Причем она являлась, по сути, копией другой CMS (Radiant CMS), переписанной с Ruby on Rails на PHP. Но это еще более долгая история, которую я, пожалуй, пропущу. К сожалению или к счастью Philippe Archambault почти полностью отошел от разработки Frog CMS уже после версии 0.9.4. Самая свежая версия Frog CMS — 0.9.5 выпускалась уже без его участия. Основным лидером разработки версии 0.9.5 был Martijn, который впоследствии создал форк под названием Wolf CMS по причине неразрешимых разногласий с Philippe. При этом Wolf CMS активно развивается (во всяком случае, на момент написания данной статьи) в то время как последние изменение в код Frog CMS внесено в июне 2009 года (т.е. год назад).
Так чем же приглянулась мне данная CMS? Во-первых, она не требовательна к ресурсам. К примеру, этот сайт работает на роутре ASUS wl-500gp с 300MHz процессором и 32MB памяти. Важным моментом является умение работать как с sqlite, так и с MySQL. То есть она может и неплохо масштабироваться в случае необходимости. Во-вторых, что гораздо важнее, в ней я обнаружил разумный компромисс между острым желанием любого гика написать все самому и желанием любого нормального человека облегчить себе жизнь.
Каким образом этого удалось достичь? Ядро данной CMS минималистично. Оно написано таким образом, что позволяет лишь собрать в единое целое части php и html кода, хранящегося в базе. При этом сам код доступен администратору сайта для прямого редактирования. Выглядит это примерно так: берем шаблон всей страницы, подставляем в него отдельные модули типа header и footer, в нужные места вставляем основной контент и вспомогательный (sidebar). А разве не таким же образом поступают классические CMS, например Drupal? Нет, не так! Классические CMS пытаются всем правдами и неправдами спрятать от пользователя чистый php и html код. В Wolf администратор видит практически весь код в чистом виде, только аккуратно разложенный по полочкам.
Как это выглядит на практике? В административном интерфейсе различаются такие понятия, как «Шаблоны», «Фрагменты» и «Страницы».
Шаблон (Layout) — это основа сайта. В нем прописывается весь код, требуемый стандартами, подключаются css файлы, метатэги, блоки <title> и т.п. Но, естественно, в нужных местах, вместо реального контента вставляются определенные функции Wolf CMS. Таким образом, шаблон выглядит как html код стандартного сайта, но при этом он короток и легко читаем за счет замены основных блоков на php-функции с понятными именами. Естественно можно создавать новые шаблоны и применять их к разным разделам сайта и даже разным страницам.
Фрагмент (Snippet) — небольшой кусок html и php кода, который позволяет выделить какой-либо блок информации в отдельную сущность. По умолчанию, в виде отдельных фрагментов выделены header и footer. В дальнейшем качестве фрагмента можно оформлять небольшие блоки информации. Отдельными фрагментами, при желании, можно сделать список ссылок, список 3-х последних статей в блоге, рекламный блок и т.п.
Страница (Page) — это конкретная статья, заметка, новость и т.п. Все страницы организованы в виде иерархической структуры. Причем текст статьи может быть просто набором слов, а может быть и php или html кодом. При этом, в отличие от фрагмента, у страниц есть еще дополнительные поля метаданных, такие как keywords и description (т.е. SEO оптимизация), а также дополнительные настройки, с помощью которых можно влиять на их внешний вид, права доступа, даты публикации и т.п. Интересно, что в виде отдельных страниц в Wolf CMS оформлены, весьма специфические вещи, такие как RSS-лента и архив статей. Что, в общем, не лишено логики. Особо стоит отметить хорошую проработку иерархической структуры. Например, все статьи блога являются потомками страницы «Articles», которая в свою очередь является потомком страницы «Home Page». Впоследствии эту иерархию легко можно трансформировать в меню, в том числе и многоуровневое.
Для решения многих специфических задач, таких как «хлебные крошки» (breadcrumb), выборка страниц по определенным критериям, ссылки типа «читать дальше», создание карты сайта и т.п. имеются либо готовые функции в ядре Wolf CMS, либо информация на официальном WIKI Wolf CMS о том, как это сделать. Хочу заметить, что в качестве моего вклада в развитие понравившейся мне CMS, я перевел несколько статей в официальном WIKI.
И что же в итоге мы получаем? Мы получаем CMS которая выполняет только те функции, которые гикам обычно просто лень писать самому. Например, поддержку регистрации и распределения прав пользователей, прилично выглядящую админку, взаимодействие с базой и т.п. При этом весь основной код сайта тем или иным способом виден прямо в админке. То есть когда у гика просыпается «полет фантазии», можно править исходники прямо на сайте, а когда обуревает лень и хочется просто написать какой-нибудь опус не заморачиваясь с программированием, такая возможность тоже имеется. В случае необходимости можно даже давать доступ не гикам. Код от них будет скрыт, а интерфейс для написания контента вполне понятен и прилично выглядит. Даже drag-and-drop в интерфейсе присутствует.
Ваши комментарии
Всего комментариев: 1
Спасибо, интересная статья. Хочется добавить что главный критерий качества CMS - это выбор пользователя. А у пользователя есть такое раскрученное слово как Wordpress , темные лошадки b2evolution, Movable Type и открытия типа Habari. Было бы интересней если Вы бы все же сравнили их с Wolf CMS.
— Denis Пнд, 30 Апр 2012