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 в интерфейсе присутствует.
Ваши комментарии
Всего комментариев: 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