Существует огромное количество систем управлении контентом (CMS), написанных на языке php под разные задачи. Вот только многие из них были написаны для учебы и уже давно заброшены.

Есть и признанные «тузы» в мире веб-разработки: WordPress, Joomla!, Drupal, MODX и некоторые другие. У этих CMS большое количество последователей, расширений, статей по ним с описанием решением разнообразных проблем, «тусовок» на разных языках.
Я хочу познакомить с новичком на рынке CMS — Bolt.
Bolt CMS — это система управлением контента, которая стремится быть простой и понятной насколько возможно. И сохраняет большой потенциал по росту проектов.
Внутренности Bolt CMS
Технически Bolt написана на языке программирования php, что не является чем-то выдающимся. Однако она построена на основе микро-фреймворка Silex, который появился как упрощение большого промышленного фреймворка Symfony. Соответственно можно при разработке использовать компоненты Symfony и другие библиотеки.
Так же можно использовать и Composer – систему управления пакетами в php, использующую библиотеку curl. Но эти все изыски для понимающих толк в программировании.
Шаблонизатор Twig, так что документации по нему в интернете много.
Увы, документации по движку даже на английском очень мало. Я переведу потом руководство пользователя и руководство разработчика с официального сайта. Одновременно я в статьях опишу тонкости, которые я раскопал самостоятельно при работе с системой и её шаблонизатором.
Требования к серверу
Требования к серверу стандартны для сегодняшнего дня
- Версия интерпретатора php 5.3.3 и выше
- Расширения SQLite для доступа к базам данных sqlite, или MySQL (PostgreSQL)
- Сервер Apache или NGIX с возможностью настройки ЧПУ (человеко-понятных адресов)
А для самого интерпретатора php требуется в настройках ресурсов:
- Минимум 32 Мбайт оперативной памяти;
- Расширение PDO для доступа к базе данных
- Расширение cUrl для обновлений
- Расширение GD для работы с графикой.
Тоже обычная конфигурация. В принципе, такие настройки даются на любом платном хостинге. Учитывая, что возможно работать без базы данных MySQL на файловой базе SQLite, то и на многих (если не на всех) бесплатных хостингах сайт на Bolt CMS тоже прекрасно заведется.
Ну а для администрирования подойдет любой современный браузер: FireFox, Chrome, Opera, Safari. Даже Internet Explorer 9 и выше будет работать. Так же будет работать админка и в мобильных браузерах: iPad, Android.
По ресурсам. Наследие Symfony сказывается — потребление памяти на фронтэнде до 12 метров, в бекэнде – до 25 метров. А вот генерация страниц 0,5 секунды на хостинге от Sprinthost.ru при первом обращении к странице и 0,26 секунды при повторных обращениях (работает кеш движка).
Тут он явно проигрывает MODX Evolution, однако выигрывает у Drupal, WordPress с заметным отрывом. Так на проекте с WordPress у меня фронтэнд генерится за 0,9-1,2 секунды и съедает память до 35 метров на том же хостинге. В целом, все это укладывается в нормы нормального быстрого сайта. Учитывая, что основные тормоза делают скрипты и неоптимизированная графика, можно сказать, что движок быстрый.
Сайты, которые можно сделать на Bolt CMS
Система явно писалась для разработчиков и это видно. Накликать как в Joomla! с её всплывающими модальными окнами настройки не получится — обязательно нужно править конфигурационные файлы. Зато система очень гибкая и удобная для разработки.
Я определил для себя, что на текущий момент в ветке 1.6 можно делать небольшие проекты:
- landing page или одностраничкики (страницы захвата посетителей);
- Сайты-визитки (главная-услуги-о фирме-контакты-обратная связь);
- корпоративные сайты без работы с пользователями,
- всевозможные каталоги товаров/услуг;
- презентационные сайты;
- сайты-статейники (то есть разные статьи с разделами, тегами, таксономией);
- блог (с ограничениями по комментариям).
Что-то большее с работой пользователями сделать уже сложнее. Но при наличие навыков программирования возможно, хотя стоит взять специализированные движок.
Чего НЕ СТОИТ делать на этом движке однозначно:
- интернет-магазины;
- социальные сети типа одноклассников или вконтакте;
- мультиблогов с наполнением из фронтенда пользователями.
Типы страниц в Bolt CMS
«Взрослые» системы управления контентом обладают одной яркой особенностью – создавать дополнительные поля к страницам по желанию и использовать их потом в шаблоне. В WordPress это не так давно стали их использовать в самом движке, хотя уже давно расширения создают такие поля. Поэтому еще как-то слабо их используют. В Drupal это называется CCK (content construction kit – конструктор контента) и именно от этого движка эта идея пошла в другие. В MODX это называется TV-параметры — параметры шаблона, который назначается странице.
Штука это удобная и позволяет очень легко в странице выносить данные по таким полям. Примером может служить страница описания товара: контент служит для описания, одно поле для цены, другое для артикула, третье для картинки-превьюшки, четвертое с помощью JSON фотогалерея, целая куча параметров — технические характеристики. Потом в шаблоне делается вывод со своим форматирование именно туда, куда нужно. И ни один безграмотный «наполнятель сайта» не сможет нарушить разметку. Кроме того, по таким полям очень удобно строить фильтры отбора для показа именно нужных лент товаров (статей/новостей).
Так вот в Bolt CMS эта возможность есть по умолчанию и заменяет собой большую часть плагинов в традиционных системах типа Joomla!. В настройках можно поправить типы полей под нужную задачу и теперь при создании материала просто заполнить форму, которая генерируется автоматически по конфигурационному файлу.
А при изменении типов контента нужно всего лишь зайти в настройках и оптимизировать базу – она автоматически изменится под новую конфигурацию. То есть добавятся или удалятся дополнительные поля в таблице материалов. Вот так просто можно управлять разнообразным контентом: фотогалереям, слайдерам, прайсам и так далее.
Плагины Bolt CMS
Все плагины, которые есть, идут в комплекте. Они не активированы, так что для работы с ними нужно их прописать в конфигурационных файлах.
Увы, особого разнообразия в плагинах нет. Фактически, большая часть — это расширения шаблонизатора Twig для легкой вставки новых тегов в шаблон страниц. Эти теги вставляют через API разнообразные плюшки интернет-сервисов: лайки, публикации в социальные сети, подключение внешних комментариев DISQUS, google analitic.
Если вы занимаетесь веб-разработкой не первый день, то легко можете сделать это и руками. Так что подсмотрев реализацию, можно делать такие плагины под задачу. Нет плагинов связи с русскими сервисами типа вконтакте и одноклассников.
Плагины есть и более «концептуальные», но я с ними еще не разбирался. Для расширения самого движка есть плагины авторизации, редактирования с фронтенда администратором страниц, теги, редактор меню (непонятно зачем?), карты сайта, RSS-ленты.
В общем, для начала есть. А более сложные сайты нужно либо на других движках делать, либо придумывать обходные пути и писать свой код.
Шаблонизатор Twig в Bolt CMS
При кажущейся простоте темы – создании шаблона для Bolt, это еще один скрытый краеугольный камень. То, что в других движках делается на php в виде сниппетов или обращениям к функциям ядра движка, в Bolt делается при помощи шаблонизатора Twig.
Как я понял после поверхностного ознакомления с документацией по шаблонизатору, в Twig можно делать свои расширения и с помощью их уже в синтаксисе задавать подпрограммы на php.
Именно так и делаются ленты, выводы страниц и некоторые другие особенности верстки.
Циклы, условия, переменные — это тоже стандартные возможности шаблонизатора.
Так что пока в обзоре Bolt на этом остановлюсь, а после перевода документации, выложу накопанные тонкости.
Заключение
Движок Bolt CMS мне понравился и я хочу на некоторых своих проектах применить его. Пока я ковыряю его на локальном сервере и на своей тестовой площадке. Возможности он предоставляет широкие и как раз под мои задачи. Ну а когда я соберу 3 полноценных разных сайта, я опишу и дополню свои впечатления.