Идеология разработки сайта в Wolf CMS

Шаблоны Wolf CMS

В Wolf CMS за отображение страниц отвечает шаблон. Что, в общем-то, стандартно для всех CMS. Шаблон хранится в базе и вы редактируете его в окне редактора. Для удобства можно подключить стандартный плагин Ace, который будет подсвечивать код. Увы, такой полезной штуки как Emmet, в плагин не подключили, поскольку плагин писался давно. В принципе, такой способ удобен для разработки на сервере, но не удобен для работы на локальном сервере с редактированием файлов через любимый редактор с подсветкой или IDE типа NetBeans.

Сами шаблоны для Wolf CMS делаются на чистом html+css+js и вставляются вставки на php. То есть никакого шаблонизатора нет и в помине. Что с одной стороны улучшает производительность, а с другой стороны усложняет разработку. Так что для адаптирования шаблона для  Wolf CMS нужно уверенное знание php, иначе вы никогда не сделаете меню и ленту статей. Хорошо хоть есть примеры кода, которые можно подсмотреть и подкорректировать под себя.

Умные головы нашли, как обойти это ограничение. Для этого достаточно при помощи языка php включить файл и можно будет редактировать файл через любимый редактор:

<?php include(THEMES_ROOT.DS.'templates/template.php');

К сожалению, такой способ не подходит к мой любимой CMS MODX. Хотя там можно тоже самое сделать, но начнутся косяки с кешированием – нужно будет руками постоянно удалять кеш MODX, иначе в браузере не будут видны обновления. В ветке Revolution вообще есть стандартный способ вынесения шаблонов, чанков и сниппетов в файлы, однако там будет та же самая проблема с кеширование. Кроме того, Agel_Nash провел исследования производительности MODX и обнаружил, что включение через статические элементы (читай файлы) существенно «просаживает» производительность сайта.

Так что этим способом можно пользоваться в Wolf CMS, однако стоит вернуть в базу все свои шаблоны и сниппеты на «боевом» сайте.

Фрагменты или сниппеты в Wolf CMS

В разработке сайта на Wolf CMS есть еще одна сущность, которая позволяет гибко настраивать отображения сайта – фрагменты или сниппеты (snippets).  Фрагменты – это куски кода, которые вы можете вставить в любое место страницы через функцию php:

<?php $this->includeSnippet('ваш сниппет');

В принципе можно так же вынести код в файл и так же все будет работать.

Если в MODX есть четкое разграничение чанк (html) – сниппет (php), то сдесь такого разграничения нет. Вы в любом месте можете использовать php и мешать одно с другим. Вопрос спорный на тему хорошая эта практика или нет, но позволяет довольно гибко делать множестов вещей.

По форме фрагменты – это функции php, которым можно передавать параметры и обрабатывать данные в них. Это удобно для генерации меню или других функций.

Фактически, при помощи фрагментов можно реализовать практические весь функционал сайта: формы обратной связи, меню, общие куски кода в шаблонах, галереи и так далее.

Плагины в Wolf CMS

Плагины в Wolf CMS – это не то, что подразумевается в других CMS.  Если в joomla расширения делятся на части: компонент (модуль с административной панелью), плагин (модуль без панели), мамбот (модуль, обрабатывающий введённые данные пользователем), то тут ближе к  drupalовским модулям. Плагины  в Wolf CMS – это подпрограммы на языке php, которые срабатывают при наступлении определенных событий в админке или на сайте.

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

Если с модулем с/без админки еще понятно, то первые два вида требуют пояснения.

Новый фильтр текста – это ни что иное, как визуальный редактор, который становится доступным в админке. Самое замечательное в том, что при сохранении страницы, в базу записывается и последний использованный фильтр, так что при открытии страницы для повторного редактировании, автоматически подключится и последний фильтр. Одно только плохо – все активные плагины-фильтры ПОДКЛЮЧАЮТСЯ ПОСТОЯННО к странице, только вы их не видите. Так что обработка скриптов и правил css замедляет админку и стоит осторожно включать эти фильтры.

Новые типы страниц позволяют расширить стандартные страницы и наделить их новыми функциями (привязать к ним обработчик). В стандартной поставке плагин Archive подключает для создания архивов страниц и вывода специальной ленты с разбивкой по датам новый тип страниц archive. Есть и другие типы в репозитарии плагинов Wolf CMS – search.

Как собираются сайты на Wolf CMS

Идеология создания сайтов на Wolf CMS простая.

Для начала вы создаете базовую структуру сайта с визуальным размещением страниц. В принципе довольно удобно, однако java script подглючивает при большом дереве и нужна некоторая сноровка. Стоит предварительно поставить на локалку и самостоятельно создать структуру какого-нибудь сложного сайта. Так вы приобретете опыт и знание как работает админка. В новых версиях ошибку фиксили, фиксили, но она снова и снова выскакивает. Приноровиться можно, но нужна тренировка.

Вторым этапом является адаптация шаблона.  Wolf CMS позволяет гибко настроить любой шаблона из чистого html, так что тут не будет сложностей с этим. Однако, будут сложности с php, поскольку готовых модулей, плагинов по созданию даже меню, здесь нет. Фактически вы берете и вставляете куски кода на php для вызовов блоков сайта — сниппетов. В зависимости от разметки и блоков появляются шаблоны и их уже придется снова привязывать к страницам. Можно и наоборот поступить — сначала сделать шаблоны, а потом уже делать структуру сайта хотя бы в черновом варианте. Но увы, при разработке всегда что-то пойдет не так и такой идеальный случай не получится. Поэтому все равно придется делать/править шаблоны и привязывать их страницам. А без черновой структуры не возможно сделать отладку сниппетов.

Третий этап в создании шаблона – это выделение общих кусков кода и оформление их во фрагменты, программирование на php логику и вывод нужного функционала. Вот тут-то и начинаются проблемы: нет готового функционала. Фактически, легко можно сделать меню – есть куча примеров, формы обратной связи – есть документация и примеры, готовые сниппеты. Комментарии уже сложнее, хотя и есть простейший плагин. Но тут можно обойтись прикручиванием внешних от DISQUS. С поиском по сайту тоже проблема, однако есть готовые простенькие плагины поиска, да и поиск от Google можно прикрутить на отдельной странице (его, увы, в дизайн очень сложно встроить). Галерея есть, но очень убогая. Вот как раз на третьем этапе и выясняется уровень веб-разработчика.

Остальной функционал типа каталогов, опросов, регистрации, гостевые книги, FAQ  — все нужно писать самому. Плагинов нет.

Ну и завершающий эта – это наполнение. Тут как бы сложности нет – есть файловый менеджер, есть несколько плагинов для визуального наполнения текста в статьи. Я даже поправил стандартный плагин редактора tinyMCE для комфортной работы, заодно прикрутил к нему файловый менеджер KCFinder. Потом я напишу про это отдельную статью.

Ну и по окончанию работ перенос сайта на хостинг. Тут тоже ничего сложного нет, главное не забыть поправить конфигурационный файл config.php.

Вот так примерно собираются сайты. Особого отличая от MODX нет, все так же, только в MODX гораздо больше готовых решений для быстрого создания сайта.

Ссылка на основную публикацию