43 заметки с тегом: symphony
43 заметки с тегом

symphony

Немного о Symphony CMS

Предисловие

Уже больше года в своей работе для создания небольших сайтов и внутри корпоративных порталов я использую Symphony CMS. Самое странное, что при такой большой конкуренции среди бесплатных CMS, данная система управления сайтами остаётся практически незамеченной российскими разработчиками и не попадает в рейтинги CMS вроде «CMS Magazine» и напрасно, как мне кажется.

Symphony CMS

Symphony CMS элегантный и миниатюрный open source движок, написанный на PHP + MySQL, который в своей основе использует XML и XSLT.

Symphony CMS

На первый взгляд Symphony очень похож ExpressionEngine, Textpattern, WordPress или Drupal. На Symphony, безусловно, можно сделать стандартный веб сайт или блог, но благодаря концептуальной элегантности в работе со структурами данных и источниками данных он находится в уникальном положении между обычными CMS и полноценными веб приложениями, такими, как Django или Ruby on Rails.

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

Мощь и сила

Вся мощь и сила Symphony CMS состоит в том, что разработчики могут создавать любые структуры данных. Создание чем-то напоминает работу с классами в модели ООП. Сначала вы создаёте некий класс, предположим, раздел статей сайта. Раздел должен содержать некоторые характерные поля: заголовок статьи, автор, текст статьи (полный и краткий), дата публикации, отметку выводить статью на сайте или нет и многое другое. Таким образом, мы создаём раздел, некий «класс» объектов для сайта, после чего, мы сразу же можем приступать к созданию экземпляров класса, т. е. писать статьи.

Разделы в 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 источниками данных.

2013   CMS   symphony   Symphony CMS   symphony cms russian   Движок   сайт

Плагин SMS Pilot Sender для Symphony CMS

На выходных задался целью написания одного небольшого, но крайне полезного плагина для движка Symphony CMS. Данным движком я пользуюсь уже больше года, и он отлично себя зарекомендовал. Описание данного движка достойно отдельной статьи, поэтому в данном посте я опишу лишь написанный мной плагин.

SMS Pilot Sender

Данный плагин добавляет новый фильтр событий для отправки СМС сообщений через сервис SMSPilot.

Установка плагина SMS Pilot Sender

  1. Скачиваем плагин на Github.
  2. Создаём каталог «sms_pilot_sender» в каталоге расширений движка и копируем в него файлы плагина.
  3. Теперь в разделе управления расширениями движка находим и включаем плагин «SMS Pilot Sender».
Включаем плагин SMS Pilot Sender

Настройка плагина SMS Pilot Sender

После установки плагина, заходим в раздел настроек для дальнейшей конфигурации. Для работы с сервисом SMS Pilot необходимо скопировать ваш уникальный API ключ в личном кабинете и вставить его в соответствующее поле в разделе настроек.

API ключ для работы с системой SMS Pilot

После ввода API ключа и сохранения настроек, в разделе появятся дополнительные поля конфигурирования, но только в том случае, если указан валидный API ключ.

Дополнительные поля настроек плагина SMS Pilot

На основании введенного API ключа, система делает запрос через API сервиса SMS Pilot и получает список допустимых имён отправителей. Имена отправителей задаётся в личном кабинете сервиса. Поле «Отправитель» отвечает за подпись отправителя СМС, именно от этого имени абонент получит СМС.

В поле «Номера телефонов» перечисляют номера телефонов абонентов, которые должны получить СМС при срабатывании события в системе.

Поле «Текст сообщения» служит для ввода текста сообщения, которое будет отправлено абонентам, чьи номера указаны в поле «Номера телефонов».

Использование плагина SMS Pilot Sender

После того, как все настройки плагина произведены, вы можете добавить появившийся фильтр SMS Pilot: Отправка СМС к любому из имеющихся в системе событий.

После того, как система инициирует данное событие, и данные будут успешно обработаны, сработает фильтр отправки СМС сообщения.

Проверка

Проверка отправки SMS

Вот такой вот первый небольшой плагин для движка Symphony CMS.

P.S. Если вы знакомы с работой системы Событий и Фильтров в Symphony CMS, то вы без проблем сможете разобраться в работе данного плагина.

2013   CMS   plugin   SMS Pilot Sender   symphony   Symphony CMS

CKEditor для Symphony

Т. к. я стал активно использовать движок Symphony CMS, который работает с XML и кодировкой UTF-8, то довольно часто приходится сталкиваться с проблемами кодировки и кодирования информации.
Одним из самых удобных редакторов текста для Symphony, на мой взгляд, является CKEditor, который устанавливается в систему в качестве плагина. Но по умолчанию плагин кодирует информацию в виде HTML символов, переводя все русские символы в коды. Это в свою очередь делает невозможным, работу поиска, так как индексирование текста становиться невозможным. А так же невозможно нормально просматривать получившийся исходный код.

Кодирование русских символов к воды вносит ещё один большой недостаток, 1 символ превращается в 6, тем самым увеличивая объём данных в 6 раз и может сильно замедлить работу движка и обработки XSLT.

После долгих поисков в интернете и чтения документации я нашёл решение данной проблемы.

Итак, скачиваем плагин CKEditor с сайта плагинов движка.

Открываем файл /ckeditor/assets/symphony.ckeditor.js, находим строку:

ck_configurationData.skin = 'chris';

И добавляем после неё 2 строки отключения обработки символов:

ck_configurationData.htmlEncodeOutput = false;
ck_configurationData.entities = false;

После чего устанавливаем плагин в систему и наслаждаемся работой системы.

Теперь корректно будет плагин поиска и значительно уменьшиться объём данных записываем в базу данных.

Структура файлов расширения

Строгая структуризация файлов расширений позволяет Symphony автоматически определять и загружать расширения.

Обзор

Структура файлов расширения создаёт определённый макет расположения и именования файлов, позволяя тем самым системе автоматически определять и загружать расширения.

Использование

При создании расширения просто следуйте конвенции описанной ниже.

Детали

Обзор

Расширения должны быть структурированы следующим образом. Обратите внимание, что обязательным файлом является лишь extension.driver.php. Остальный файлы могут быть добавлены по мере необходимости.

yourextension/
        assets/
            sample.js
            sample.css
        content/
            content.index.php
            content.sample.php
        data-sources/
            datasource.sample.php
        events/
            event.sample.php
        fields/
            field.sample.php
        lang/
            lang.de.php
            lang.es.php
        lib/
            yourphplibs.php
        text-formatters/
            formatter.sample.php
        extension.driver.php
        license
        README

assets/

Хотя фактически каталог не используется для автоматического подключения файлов, но в него помещаются CSS файлы, JavaScript и изображения.

content/

Файлы в данном каталоге автоматически подключаются и используются для генерации страниц в панели управления. Файл content.sample.php будет доступен по адресу /symphony/extension/yourextension/sample, а файл content.index.php по адресу /symphony/extension/yourextension

data-sources/

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

events/

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

fields/

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

lang/

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

lib/

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

text-formatters/

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

extension.driver.php

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

license or licence

Текстовый файл описывающий лицензию использования расширения.

README or README.markdown

README файл для расширения. Обычно данный файл содержит основную информацию (имя расширения, версию и дату релиза), информацию разработчика (имя, email и адрес веб-сайта) и информацию о установке и использовании расширения.

The Big Picture

Структура файла расширения это важная часть API расширений Symphony (документация находиться в разработке).

Делегаты

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

Обзор

Делегаты представляют собой функции ядра Symphony, которые позволяют разработчикам расширений влиять на генерацию внешних и внутренних страниц системы. Как правило, делегаты используются в контексте PHP объектов (объектов страниц или событий), таким образом разработчик может передавать и получать данные при работе с делегатами.

Использование

Расширения могут подписываться на делегаты системы при помощи объявления функции getSubscribedDelegates() в файле extension.driver.php, как показано ниже:

   public function getSubscribedDelegates(){
        return array(
            array(
                'page' => '/delegatepage/',
                'delegate' => 'DelegateName',
                'callback' => 'extensionFunction'
            ),
        );
    }

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

Для получения дополнительной информации о делегатах смотрите документацию.

Ctrl + ↓ Ранее