{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "В наушниках по жизни: заметки с тегом Движок",
    "_rss_description": "Здесь я пишу свои идеи, мысли, описываю события своей жизни и просто делаю личные и рабочие заметки. «А Вы что, собираетесь жить вечно?»",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/alexbirukov.ru\/?go=tags\/dvizhok\/",
    "feed_url": "https:\/\/alexbirukov.ru\/?go=tags%2Fdvizhok%2Fjson%2F",
    "icon": "https:\/\/alexbirukov.ru\/pictures\/userpic\/userpic@2x.jpg?1683051473",
    "authors": [
        {
            "name": "Бирюков Александр",
            "url": "https:\/\/alexbirukov.ru\/",
            "avatar": "https:\/\/alexbirukov.ru\/pictures\/userpic\/userpic@2x.jpg?1683051473"
        }
    ],
    "items": [
        {
            "id": "302",
            "url": "https:\/\/alexbirukov.ru\/?go=all\/nemnogo-o-symphony-cms\/",
            "title": "Немного о Symphony CMS",
            "content_html": "<h2>Предисловие<\/h2>\n<p>Уже больше года в своей работе для создания небольших сайтов и внутри корпоративных порталов я использую <a href=\"http:\/\/www.getsymphony.com\/\">Symphony CMS<\/a>. Самое странное, что при такой большой конкуренции среди бесплатных CMS, данная система управления сайтами остаётся практически незамеченной российскими разработчиками и не попадает в рейтинги CMS вроде «<a href=\"http:\/\/www.ratingruneta.ru\/cms\/\">CMS Magazine<\/a>» и напрасно, как мне кажется.<\/p>\n<h2>Symphony CMS<\/h2>\n<p>Symphony CMS  элегантный и миниатюрный open source движок, написанный на PHP + MySQL, который в своей основе использует XML и XSLT.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/alexbirukov.ru\/pictures\/symphony.jpg\" width=\"800\" height=\"476\" alt=\"Symphony CMS\" \/>\n<\/div>\n<p>На первый взгляд Symphony очень похож ExpressionEngine, Textpattern, WordPress или Drupal. На Symphony, безусловно, можно сделать стандартный веб сайт или блог, но благодаря концептуальной элегантности в работе со структурами данных и источниками данных он находится в уникальном положении между обычными CMS и полноценными веб приложениями, такими, как Django или Ruby on Rails.<\/p>\n<p>Большая гибкость при работе с данными позволяет веб разработчикам полностью контролировать процесс создания и работы любого веб приложения. По началу, большая гибкость и мощь движка может пугать, но отличная документация и активная поддержка сообщества всегда помогут разобраться даже в самой сложной ситуации.<\/p>\n<h2>Мощь и сила<\/h2>\n<p>Вся мощь и сила Symphony CMS состоит в том, что разработчики могут создавать любые структуры данных. Создание чем-то напоминает работу с классами в модели ООП. Сначала вы создаёте некий класс, предположим, раздел статей сайта. Раздел должен содержать некоторые характерные поля: заголовок статьи, автор, текст статьи (полный и краткий), дата публикации, отметку выводить статью на сайте или нет и многое другое. Таким образом, мы создаём раздел, некий «класс» объектов для сайта, после чего, мы сразу же можем приступать к созданию экземпляров класса, т. е. писать статьи.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/alexbirukov.ru\/pictures\/section.jpg\" width=\"1352\" height=\"624\" alt=\"Разделы в Symphony CMS\" \/>\n<\/div>\n<p>Ещё одним большим плюсом системы, является то, что любые структуры данных можно изменять уже после начала их заполнения. Например, есть у вас раздел для создания статей, и в нём уже есть пара десятков статей. И вот у вас возникла необходимость добавить новое поле, к примеру, поле для ввода тегов. Система позволит вам это сделать совершенно без проблем, при этом никакие, уже имеющиеся данные, не потеряются.<\/p>\n<p>После создания разделов, разработчики создают так называемые «Источники данных». Суть их проста, выборка данных из имеющихся разделов. Напрмер, есть у меня раздел статей, из которого мне надо выбрать только статьи, которые помечены, как опубликованные и только за текущий месяц. Для этого потребуется создать простой источник данных, задать раздел из которого необходимо сделать выборку данных и установить условия выборки. И всё. Источник готов к работе.<\/p>\n<p>Я представил немного упрощённую модель работы с источниками данных, потому что условий выборки может быть куда больше, и они могут быть куда более сложными. Тут есть и возможность выборки на основании других источников данных, на основании внешних параметров, передаваемых пользователем и т. д. Ещё раз повторю, система является невероятно гибкой.<\/p>\n<p>После создания источника данных его необходимо прикрепить к странице, на которой его планируется использовать.<\/p>\n<p>На этом собственно и основана работа в <b>backend<\/b>.<\/p>\n<p>Далее дело за разработчиками <b>fronend<\/b>.<\/p>\n<p>Все данные, получаемые от источников данных, поступают на страницы в виде XML. Сами же страницы создаются при помощи XSLT, HTML, CSS, JS и любых других технологий. Тут я думаю подробно описывать ничего не надо, но вся суть заключается в том, что в уже имеющийся готовый шаблон выводятся данные полученные от источников данных путём вывода определённых ветвей XML. И разработчики получают все плюсы и минусы работы с XSLT и XML.<\/p>\n<h2>Расширяемость<\/h2>\n<p>Помимо гибкой системы работы с данными и шаблонами страниц, движок может похвастаться богатым набором функций доступных через API и простотой разработки дополнительных модулей, которых, кстати, уже довольно большое количество и для них имеется даже <a href=\"http:\/\/symphonyextensions.com\/\">отдельный сайт<\/a>.<\/p>\n<p>На сайте можно найти расширения на любой случай. От дополнительных полей до полноценных редакторов текста, которые вы можете встроить в свои разделы.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/alexbirukov.ru\/pictures\/extensions.jpg\" width=\"800\" height=\"384\" alt=\"Расширения\" \/>\n<\/div>\n<p>Так же на сайте движка разработчики могут найти так называемые XSLT утилиты, это небольшие XSL файлы, с шаблонами обработки определённых данных или создания определённых частей интерфейса. Например, шаблон большого календаря, ячейки которого унифицированы и каждую из них вы можете заполнить любыми данными, не прибегая к изменению самого шаблона.<\/p>\n<p>Или, например, XSLT модуль для типографики текста. Т. е. вы просто применяете шаблон к тексту и всё. Модуль автоматически заменит и подставит правильные двойные кавычки, заменит короткое тире на длинное и пр.<\/p>\n<p>Банк утилит постоянно обновляет и пополняется. Сообщество разработчиков ведёт довольно активную деятельность. Любой желающий может написать и выложить свой модуль или расширение прямо на сайте <a href=\"http:\/\/www.getsymphony.com\/\">Sуmphony<\/a> или на <a href=\"http:\/\/symphonyextensions.com\/\">Symphony Extensions<\/a>.<\/p>\n<p>Кстати, вот <a href=\"http:\/\/symphonyextensions.com\/developers\/alexbirukov\/\">страница с моими расширениями<\/a>.<\/p>\n<p>Первым моим самостоятельным расширением было «<a href=\"http:\/\/symphonyextensions.com\/extensions\/lang_russian\/\">Language: Russian<\/a>», это локализация ядра самого движка.<\/p>\n<p>Затем, я немного изменил расширение «<a href=\"http:\/\/symphonyextensions.com\/extensions\/nestedcats\/\">Nested Categories<\/a>» для организации вложенных категорий и которое было написано русским разработчиком, но, увы, больше им не поддерживалось.<\/p>\n<p>И последнее, написанное мной расширение, это «<a href=\"http:\/\/symphonyextensions.com\/extensions\/sms_pilot_sender\/\">SMS Pilot Sender<\/a>». Расширение, которое при возникновении какого-либо события отправляет СМС через сервис SMS Pilot. Подробно работу расширения я описал в предыдущем посте «<a href=\"http:\/\/alexbirukov.ru\/?go=all\/plagin-sms-pilot-sender-dlya-symphony-cms\/\">Плагин SMS Pilot Sender для Symphony CMS<\/a>».<\/p>\n<h2>Переносимость<\/h2>\n<p>Помимо невероятной гибкости и расширяемости самой системы, ещё одной невероятно полезной отличительной особенностью движка является система экспорта сборки или в оригинальном варианте «Export Ensemble». Это крайне полезная функция для разработчиков, которые постоянно занимаются разработкой однотипных систем.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/alexbirukov.ru\/pictures\/export.jpg\" width=\"800\" height=\"74\" alt=\"Экспорт сборки\" \/>\n<\/div>\n<p>Предположим, перед нами стоит задача создания двух идентичных новостных сайтов, у которых идентично всё, кроме дизайна. Экспорт сборки, позволит создать архив не только движка, но и всех расширений, данных, настроек и пр. При этом архив содержит не просто файлы, а готовый к установке движок. Т. е. достаточно в одном месте сделать выгрузку сборки, распаковать её на другой площадке и просто произвести процесс установки. После чего, мы получим совершенно готовый к работе сайт. Нам останется лишь изменить дизайн, при этом системная часть не потребует внесения изменений.<\/p>\n<h2>Заключение<\/h2>\n<p>Таким образом, небольшой и очень функциональный движок может стать невероятно мощным инструментом в руках веб разработчика. Symphony CMS позволят создавать всё, от простых сайтов и блогов до функциональных корпоративных порталов, с большим количеством специфических данных и предоставляет разработчиками невероятно широкие просторы по реализации систем хранения и обработки данных любой структуры с последующим их выводом в виде XML, что в свою очередь даёт возможность интеграции движка в современные системы, умеющие работать с внешними XML источниками данных.<\/p>\n",
            "date_published": "2013-10-21T14:22:54+05:00",
            "date_modified": "2021-01-30T22:20:53+05:00",
            "tags": [
                "CMS",
                "symphony",
                "Symphony CMS",
                "symphony cms russian",
                "Движок",
                "сайт"
            ],
            "image": "https:\/\/alexbirukov.ru\/pictures\/symphony.jpg",
            "_date_published_rfc2822": "Mon, 21 Oct 2013 14:22:54 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "302",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/alexbirukov.ru\/pictures\/symphony.jpg",
                    "https:\/\/alexbirukov.ru\/pictures\/section.jpg",
                    "https:\/\/alexbirukov.ru\/pictures\/extensions.jpg",
                    "https:\/\/alexbirukov.ru\/pictures\/export.jpg"
                ]
            }
        },
        {
            "id": "246",
            "url": "https:\/\/alexbirukov.ru\/?go=all\/ckeditor-symphony\/",
            "title": "CKEditor для Symphony",
            "content_html": "<p>Т. к. я стал активно использовать движок Symphony CMS, который работает с XML и кодировкой UTF-8, то довольно часто приходится сталкиваться с проблемами кодировки и кодирования информации.<br \/>\nОдним из самых удобных редакторов текста для Symphony, на мой взгляд, является <a href=\"http:\/\/ckeditor.com\/\">CKEditor<\/a>, который устанавливается в систему в качестве <a href=\"http:\/\/symphonyextensions.com\/extensions\/ckeditor\/\">плагина<\/a>. Но по умолчанию плагин кодирует информацию в виде HTML символов, переводя все русские символы в коды. Это в свою очередь делает невозможным, работу поиска, так как индексирование текста становиться невозможным. А так же невозможно нормально просматривать получившийся исходный код.<\/p>\n<p>Кодирование русских символов к воды вносит ещё один большой недостаток, 1 символ превращается в 6, тем самым увеличивая объём данных в 6 раз и может сильно замедлить работу движка и обработки XSLT.<\/p>\n<p>После долгих поисков в интернете и чтения документации я нашёл решение данной проблемы.<\/p>\n<p>Итак, скачиваем плагин <a href=\"http:\/\/symphonyextensions.com\/extensions\/ckeditor\/\">CKEditor<\/a> с сайта плагинов движка.<\/p>\n<p>Открываем файл <span class=\"selected1\">\/ckeditor\/assets\/symphony.ckeditor.js<\/span>, находим строку:<\/p>\n<pre class=\"brush: js\">\nck_configurationData.skin = ’chris’;\n<\/pre>\n<p>И добавляем после неё 2 строки отключения обработки символов:<\/p>\n<pre class=\"brush: js\">\nck_configurationData.htmlEncodeOutput = false;\nck_configurationData.entities = false;\n<\/pre>\n<p>После чего устанавливаем плагин в систему и наслаждаемся работой системы.<\/p>\n<p>Теперь корректно будет плагин поиска и значительно уменьшиться объём данных записываем в базу данных.<\/p>\n",
            "date_published": "2012-12-22T22:29:36+05:00",
            "date_modified": "2015-07-04T10:54:57+05:00",
            "tags": [
                "CKEditor",
                "CMS",
                "Data",
                "symphony",
                "Движок",
                "Кодирование",
                "Русские буквы",
                "Символы"
            ],
            "_date_published_rfc2822": "Sat, 22 Dec 2012 22:29:36 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "246",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        }
    ],
    "_e2_version": 4134,
    "_e2_ua_string": "Aegea 11.3 (v4134)"
}