Немного о Symphony CMS
Предисловие
Уже больше года в своей работе для создания небольших сайтов и внутри корпоративных порталов я использую Symphony CMS. Самое странное, что при такой большой конкуренции среди бесплатных CMS, данная система управления сайтами остаётся практически незамеченной российскими разработчиками и не попадает в рейтинги CMS вроде «CMS Magazine» и напрасно, как мне кажется.
Symphony CMS
Symphony CMS элегантный и миниатюрный open source движок, написанный на PHP + MySQL, который в своей основе использует XML и XSLT.
На первый взгляд Symphony очень похож ExpressionEngine, Textpattern, WordPress или Drupal. На Symphony, безусловно, можно сделать стандартный веб сайт или блог, но благодаря концептуальной элегантности в работе со структурами данных и источниками данных он находится в уникальном положении между обычными CMS и полноценными веб приложениями, такими, как Django или Ruby on Rails.
Большая гибкость при работе с данными позволяет веб разработчикам полностью контролировать процесс создания и работы любого веб приложения. По началу, большая гибкость и мощь движка может пугать, но отличная документация и активная поддержка сообщества всегда помогут разобраться даже в самой сложной ситуации.
Мощь и сила
Вся мощь и сила Symphony CMS состоит в том, что разработчики могут создавать любые структуры данных. Создание чем-то напоминает работу с классами в модели ООП. Сначала вы создаёте некий класс, предположим, раздел статей сайта. Раздел должен содержать некоторые характерные поля: заголовок статьи, автор, текст статьи (полный и краткий), дата публикации, отметку выводить статью на сайте или нет и многое другое. Таким образом, мы создаём раздел, некий «класс» объектов для сайта, после чего, мы сразу же можем приступать к созданию экземпляров класса, т. е. писать статьи.
Ещё одним большим плюсом системы, является то, что любые структуры данных можно изменять уже после начала их заполнения. Например, есть у вас раздел для создания статей, и в нём уже есть пара десятков статей. И вот у вас возникла необходимость добавить новое поле, к примеру, поле для ввода тегов. Система позволит вам это сделать совершенно без проблем, при этом никакие, уже имеющиеся данные, не потеряются.
После создания разделов, разработчики создают так называемые «Источники данных». Суть их проста, выборка данных из имеющихся разделов. Напрмер, есть у меня раздел статей, из которого мне надо выбрать только статьи, которые помечены, как опубликованные и только за текущий месяц. Для этого потребуется создать простой источник данных, задать раздел из которого необходимо сделать выборку данных и установить условия выборки. И всё. Источник готов к работе.
Я представил немного упрощённую модель работы с источниками данных, потому что условий выборки может быть куда больше, и они могут быть куда более сложными. Тут есть и возможность выборки на основании других источников данных, на основании внешних параметров, передаваемых пользователем и т. д. Ещё раз повторю, система является невероятно гибкой.
После создания источника данных его необходимо прикрепить к странице, на которой его планируется использовать.
На этом собственно и основана работа в backend.
Далее дело за разработчиками fronend.
Все данные, получаемые от источников данных, поступают на страницы в виде XML. Сами же страницы создаются при помощи XSLT, HTML, CSS, JS и любых других технологий. Тут я думаю подробно описывать ничего не надо, но вся суть заключается в том, что в уже имеющийся готовый шаблон выводятся данные полученные от источников данных путём вывода определённых ветвей XML. И разработчики получают все плюсы и минусы работы с XSLT и XML.
Расширяемость
Помимо гибкой системы работы с данными и шаблонами страниц, движок может похвастаться богатым набором функций доступных через API и простотой разработки дополнительных модулей, которых, кстати, уже довольно большое количество и для них имеется даже отдельный сайт.
На сайте можно найти расширения на любой случай. От дополнительных полей до полноценных редакторов текста, которые вы можете встроить в свои разделы.
Так же на сайте движка разработчики могут найти так называемые XSLT утилиты, это небольшие XSL файлы, с шаблонами обработки определённых данных или создания определённых частей интерфейса. Например, шаблон большого календаря, ячейки которого унифицированы и каждую из них вы можете заполнить любыми данными, не прибегая к изменению самого шаблона.
Или, например, XSLT модуль для типографики текста. Т. е. вы просто применяете шаблон к тексту и всё. Модуль автоматически заменит и подставит правильные двойные кавычки, заменит короткое тире на длинное и пр.
Банк утилит постоянно обновляет и пополняется. Сообщество разработчиков ведёт довольно активную деятельность. Любой желающий может написать и выложить свой модуль или расширение прямо на сайте Sуmphony или на Symphony Extensions.
Кстати, вот страница с моими расширениями.
Первым моим самостоятельным расширением было «Language: Russian», это локализация ядра самого движка.
Затем, я немного изменил расширение «Nested Categories» для организации вложенных категорий и которое было написано русским разработчиком, но, увы, больше им не поддерживалось.
И последнее, написанное мной расширение, это «SMS Pilot Sender». Расширение, которое при возникновении какого-либо события отправляет СМС через сервис SMS Pilot. Подробно работу расширения я описал в предыдущем посте «Плагин SMS Pilot Sender для Symphony CMS».
Переносимость
Помимо невероятной гибкости и расширяемости самой системы, ещё одной невероятно полезной отличительной особенностью движка является система экспорта сборки или в оригинальном варианте «Export Ensemble». Это крайне полезная функция для разработчиков, которые постоянно занимаются разработкой однотипных систем.
Предположим, перед нами стоит задача создания двух идентичных новостных сайтов, у которых идентично всё, кроме дизайна. Экспорт сборки, позволит создать архив не только движка, но и всех расширений, данных, настроек и пр. При этом архив содержит не просто файлы, а готовый к установке движок. Т. е. достаточно в одном месте сделать выгрузку сборки, распаковать её на другой площадке и просто произвести процесс установки. После чего, мы получим совершенно готовый к работе сайт. Нам останется лишь изменить дизайн, при этом системная часть не потребует внесения изменений.
Заключение
Таким образом, небольшой и очень функциональный движок может стать невероятно мощным инструментом в руках веб разработчика. Symphony CMS позволят создавать всё, от простых сайтов и блогов до функциональных корпоративных порталов, с большим количеством специфических данных и предоставляет разработчиками невероятно широкие просторы по реализации систем хранения и обработки данных любой структуры с последующим их выводом в виде XML, что в свою очередь даёт возможность интеграции движка в современные системы, умеющие работать с внешними XML источниками данных.
Давно заинтересовался этой системой. Есть встречный вопрос: как насчет работы с большим количеством материалов? К примеру, новостной сайт с 10 000 страниц. Не тестировали? Просто обожглись с MODx. На ней большое количество ресурсов ведет к ступору сайта. Приходится выдумывать костыли.
Ну т. к. страницы у нас разом не выгружаются 10 000, то я так понимаю вас интересует именно узкие выборки новостей из всех материалов. На данный момент, есть проект, к сожалению закрытый, там есть календарь событий, с которым ежедневно работает порядка 100 человек, сейчас в нём уже около 7000 событий, и в принципе все выборки и обработка XML данных происходит достаточно быстро, никаких ступоров при выборке не наблюдается, календарь на месяц (порядка 100 событий) формируется достаточно быстро. При реализации сложных выборок, например статистика событий по конкретному пользователю за определённый период тоже формируется достаточно быстро. За всё вемя работы с системой, ни разу в принципе не удалось нагрузить до «затыков».
И хотелось бы узнать: сталкивались ли с отрицательными моментами? Если да, то какими? XSLT и XML отношу к достоинствам (предугадывая вариант). Премного благодарен заранее.
Как раз интересовала выборка, да. Буду пробовать. Спасибо большое за информацию!
Ребята какой прогресс за все время подскажите пожалуйста? С данной системой ещё работают или она уже устарела?
Добрый день. Увы, к сожалению, обновляется движок сейчас достаточно редко. Последнее обновление было в апреле 2019 года, хоть и помечено оно LTS, но всё же надо смотреть более детально. Да и функционал достаточно ограниченный.
Добрый день! Скажите пожалуйста, если Symphony уже устарела, то какую CMS сейчас можно считать ее современным заменителем? Спасибо.
Добрый день. Она не то, чтобы устарела, просто очень плохо поддерживается и развивается. Аналогов с подобным же принципом работы я не встречал. Если же искать совершенно другой движок, то тут надо уже смотреть по поставленным задачам и исходить из них.