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 в интерфейсе присутствует.

Поделиться: Facebook ВКонтакте livejornal

Ваши комментарии

Всего комментариев: 10

Спасибо, интересная статья. Хочется добавить что главный критерий качества CMS - это выбор пользователя. А у пользователя есть такое раскрученное слово как Wordpress , темные лошадки b2evolution, Movable Type и открытия типа Habari. Было бы интересней если Вы бы все же сравнили их с Wolf CMS.

— Denis Пн, 30 апр 2012

Спасибо Denis за первый комментарий. Рад, что мои опусы хоть кому-нибудь пригодились. По-поводу Wordpress, b2evolution и Movable Type могу лишь сказать пару слов прямо здесь, без написания отдельной статьи. Все они вылетают за рамки адекватного сравнения с Wolf CMS по критерию "легковесность". Для меня это был ключевой критерий, т.к. сайт работает на роутере ASUS wl-500gp с 300MHz процессором и 32MB памяти. Т.е. у меня стояла задача для "истинного гика" на грани с извращением. Соответственно все, что на MySQL сразу мимо кассы.

crick Вт, 5 июн 2012

cms made simple мне больше понравилась

Чико Ср, 1 авг 2012

но она на MySQl/PostgreSQL

Чико Ср, 1 авг 2012

Новичек еще с этой системой, но уже начал разбираться. Спасибо за обзор.

Продвижение Вт, 11 сен 2012

Хмм.. А интернет-магазин обувной например можно посадить на такую cms?

Олви Сб, 22 дек 2012

Олви, думаю сажать интернет магазин на Wolf CMS бессмысленно. Придется весь функционал ручками прописывать.

crick Пн, 31 дек 2012

Привет,
Как насчет пары подсказок с настройкой Wulf'a под OpenWrt?
Я как грится nub....
Заранее спасибо.

— Gray Вс, 11 авг 2013

Подскажите, плиз: 1) решена ли в системе задача поддержки мультиязычности? 2) имеется ли поисковый сервис? 3) Поддержка капчи? 4) Где почитать об имеющихся доп. плагинах и соотвественно их скачать? Спасибо.

— Дмитрий Вс, 13 окт 2013

Дмитрий, постараюсь ответить на Ваши вопросы:
1. Поддержка мультиязычности есть "из коробки". Но лично я не тестировал, т.к. не было такой цели. Я пишу только по-русски.
2. Поисковые плагины имеются, но я их тоже не тестировал. У меня на сайте пока не так много информации.
3. Капчу Вам приходилось использовать, когда Вы писали свой комментарий. Разве нет? Других готовых вариантов капчи нет. Но лично меня устраивает и такая. Пока особого спама на данном сайте не было.
4. Все плагины здесь: http://www.wolfcms.org/repository

crick Пн, 14 окт 2013