Но прежде чем приступить к собственно описанию функционала модуля, небольшое предисловие.
Практически каждый сайт сейчас содержит множество подключаемых скриптов различных внешних сервисов: социальные плагины, счетчики, закладки, баннеры и др. Многие из них содержат не только код, размещаемый непосредственно в месте страницы, где отображаются кнопки, картинки, формы и т.д., но и требуют размещения дополнительного кода в области заголовка страницы.
Итак, проведем небольшое исследование - каким образом мы обычно размещаем все эти коды:
Код для области заголовка размещаем непосредственно в header.php, код для страницы размещаем прямо в месте отображения. Это не очень удобно с точки зрения оперативного внесения изменений, а редактирование пользователем без программиста становиться и вовсе невозможным.
Код для страницы размещаем во включаемой области, а код для заголовка размещаем с помощью функции $APPLICATION->AddHeadS tring() в той же включаемой области. При этом наибольшая проблема - это исключить дублирование кода в заголовке, т.к. часто один и тот же плагин размещается на странице в нескольких местах, либо используются несколько разных плагинов от одного сервиса с одинаковым кодом в заголовке. Редактирование кода пользователем без навыков программирования под Битрикс опять таки становится затруднительным.
Можно разместить коды аналогично способу 1, а уникальные идентификаторы, которые используют многие сервисы, вынести в init.php в виде констант. Данный метод может немного упростить процесс для программиста, но пользователь опять же остается не у дел.
Создаем компонент, в который помещаем код плагина, настройки плагина выносим в параметры компонента. Это может упростить размещение плагина непосредственно на странице, однако редкие плагины размещаются на странице, почти всегда они находятся в хедере или футере, и нужно обладать достаточно большой смелостью, чтобы менять параметры компонентов, находящихся там, через визуальный редактор или режим правки.
При использовании любого из этих способов обычному пользователю правильно добавить на сайт код нового плагина или управлять функциональностью существующих будет очень сложно.
Если же на одном экземпляре битрикс работают несколько сайтов, то процесс еще более усложняется.
Поэтому была поставлена задача: сделать модуль для централизованного управления кодами всех счетчиков, социальных сервисов, баннеров, подключаемых с внешних сайтов и даже, возможно, таких плагинов, как яндекс или google карты. При этом модуль должен быть максимально простым в использовании. Должна быть возможность подключения новых плагинов без правки шаблона сайта.
Модуль позволяет решать следующие задачи:
Редактирование и добавление плагинов через административный интерфейс
Создание групп плагинов для упрощения добавления новых плагинов на сайт без модификации шаблона сайта
Создание и параметров плагинов и редактирование их значений независимо для каждого сайта
Управление активностью плагинов (также независимо для каждого сайта)
Теперь собственно о том, как работает модуль. Его основа - это две административные страницы:
Страница редактирования и добавления плагинов, групп плагинов, параметров плагинов (редактор сайта может не иметь доступа к этой странице - права доступа устанавливаются в настройках модуля)
Страница редактирования значений параметров (основная страница модуля, доступна из меню)
Форма редактирования плагинов выглядит следующим образом:
На картинке:
Идентификатор плагина
Название плагина (необязательно, предназначено только для административных интерфейсов)
Сортировка (влияет на порядок плагина при отображении в группе)
Привязка плагинов к группам (список групп редактируется на соседней вкладке)
Код для области заголовка плагина. Данный код подключается только при первом вызове плагина на странице. Код может быть общим для нескольких плагинов, см. пункт 7
Если эта галочка установлена, то код заголовка при выводе данного плагина будет помещен не в области "head" страницы, а непосредственно перед первым вызовом плагина на странице
Кнопка привязки кода заголовка данного плагина к коду заголовка другого плагина - необходимо для случая, когда несколько плагинов используют один и тот же код заголовка (разные плагины одного сервиса), для предотвращения дублирования
Кнопка вставки параметра (редактирование списка параметров осуществляется на соответствующей вкладке). Также доступны некоторые предустановленные параметры, например, URL текущей страницы, путь к шаблону сайта, текущий домен и т.д.
Непосредственно код плагина
С помощью выбора сайта в выпадающем списке можно задать код плагина, уникальный для сайта. Если лампочка горит зеленым, значит есть коды, уникальные для сайтов
Пример вставленного параметра
Размещение плагинов на сайте
Для размещения плагинов на сайте в модуле есть 2 компонента: "grain:plugin.single" и "grain:plugin.group".
Первый предназначен для размещения на сайте одного плагина, в качестве параметров принимает только ID выбранного плагина:
Каким же образом можно добавить на сайт новый плагин, не затрагивая код в шаблоне сайта? Очень просто, для этого и существуют группы плагинов. Если, например, разместить на сайте группу плагинов "like" (с помощью компонента "grain:plugin.group", то в последующем, если добавить новый плагин через административную страницу и включить его в группу "like", он таким образом автоматически появится на сайте.
Параметры
При заходе через меню на основную страницу модуля, пользователь может устанавливать значения параметров (список которых задается на странице редактирования плагинов). Параметры могут быть 3 типов: текст, текст. поле, список. Также на этой странице можно устанавливать активность плагинов (неактивные плагины не выводятся на сайте).
Распределение прав доступа
В настройках модуля можно задать один из трех уровней доступа к модулю:
Просмотр параметров: пользователь имеет доступ к основной странице модуля, видит значения параметров, но не может их изменять
Изменение параметров: пользователь имеет доступ к основной странице модуля, видит значения параметров, и может их изменять
Полный доступ: пользователь имеет доступ ко всему функционалу модуля, в. т.ч. к странице редактирования плагинов
Быстродействие
Модуль не использует базу данных для хранения кодов плагинов, данные хранятся в php файле в виде массива. Параметры хранятся в настройках модуля и получаются при помощи функции COption::GetOptionS tring(). При таких условиях кешировать выдаваемый модулем код не нужно.
Стоимость модуля - 600 руб. Действуют партнерские скидки.
Предлагаю опробовать модуль в действии, пробный период составляет 30 дней.
Социальные сервисы используем редко. А вот счетчики: top100.rambler.ru top.mail.ru яндекс.метрика яндекс.вебмастер google.ru/analytics/ spylog.ru hotlog.ru liveinternet.ru и др. устанавливаем практически на каждом проекте. Это рутинная геморрная операция для менеджера проекта. Было бы здорово если бы модуль имел плагины для этих счетчиков с возможностью настройки вида счетчика, цвета, размера итд.
А если бы он еще и сам умел в этих системах автоматом сайт регистрировать -- было бы ну очень круто!
Я решил не забивать в модуль никакие плагины по умолчанию, т.к. модуль универсальный. Но если вы все эти счетчики один раз забьете, то перенести с одного проекта на другой не составит труда, достаточно скопировать 4 файла из папки /bitrix/modules/grain.social/data/ (там все, кроме значений параметров). В след. версиях будет экспорт-импорт плагинов. А вот автоматическая регистрация - это вряд ли будет
Да, про параметры забыл написать - это как раз без проблем модуль умеет, параметры можно любые создавать самому, и цвет, и размер в том числе. 3 типа параметров - текст, текст. поле, список. Сами параметры хранятся в этих же 4 файлах, а вот их значения отдельно сохраняются, через класс COption.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».