Коллеги! Сегодня я хочу представить свой новый модуль "".
Но прежде чем приступить к собственно описанию функционала модуля, небольшое предисловие.
Практически каждый сайт сейчас содержит множество подключаемых скриптов различных внешних сервисов: социальные плагины, счетчики, закладки, баннеры и др. Многие из них содержат не только код, размещаемый непосредственно в месте страницы, где отображаются кнопки, картинки, формы и т.д., но и требуют размещения дополнительного кода в области заголовка страницы.
Итак, проведем небольшое исследование - каким образом мы обычно размещаем все эти коды:
Если же на одном экземпляре битрикс работают несколько сайтов, то процесс еще более усложняется.
Поэтому была поставлена задача: сделать модуль для централизованного управления кодами всех счетчиков, социальных сервисов, баннеров, подключаемых с внешних сайтов и даже, возможно, таких плагинов, как яндекс или google карты. При этом модуль должен быть максимально простым в использовании. Должна быть возможность подключения новых плагинов без правки шаблона сайта.
Модуль позволяет решать следующие задачи:

На картинке:
Для размещения плагинов на сайте в модуле есть 2 компонента: "grain:plugin.single" и "grain:plugin.group".
Первый предназначен для размещения на сайте одного плагина, в качестве параметров принимает только ID выбранного плагина:
Второй предназначен для размещения группы плагинов
В качестве параметров принимает ID выбранной группы
или несколько идентификаторов плагинов
Или, конечно же, через визуальный редактор:

Каким же образом можно добавить на сайт новый плагин, не затрагивая код в шаблоне сайта? Очень просто, для этого и существуют группы плагинов. Если, например, разместить на сайте группу плагинов "like" (с помощью компонента "grain:plugin.group"
, то в последующем, если добавить новый плагин через административную страницу и включить его в группу "like", он таким образом автоматически появится на сайте.
Параметры
При заходе через меню на основную страницу модуля, пользователь может устанавливать значения параметров (список которых задается на странице редактирования плагинов). Параметры могут быть 3 типов: текст, текст. поле, список. Также на этой странице можно устанавливать активность плагинов (неактивные плагины не выводятся на сайте).

Распределение прав доступа
В настройках модуля можно задать один из трех уровней доступа к модулю:
Модуль не использует базу данных для хранения кодов плагинов, данные хранятся в php файле в виде массива. Параметры хранятся в настройках модуля и получаются при помощи функции COption::GetOptionS tring(). При таких условиях кешировать выдаваемый модулем код не нужно.

Стоимость модуля - 600 руб. Действуют партнерские скидки.
Предлагаю опробовать модуль в действии, пробный период составляет 30 дней.
Подробнее о модуле:
Страница в Marketplace:
Справка:
Руководство по быстрому старту:
Другие мои модули:
Но прежде чем приступить к собственно описанию функционала модуля, небольшое предисловие.
Практически каждый сайт сейчас содержит множество подключаемых скриптов различных внешних сервисов: социальные плагины, счетчики, закладки, баннеры и др. Многие из них содержат не только код, размещаемый непосредственно в месте страницы, где отображаются кнопки, картинки, формы и т.д., но и требуют размещения дополнительного кода в области заголовка страницы.
Итак, проведем небольшое исследование - каким образом мы обычно размещаем все эти коды:
- Код для области заголовка размещаем непосредственно в header.php, код для страницы размещаем прямо в месте отображения. Это не очень удобно с точки зрения оперативного внесения изменений, а редактирование пользователем без программиста становиться и вовсе невозможным.
- Код для страницы размещаем во включаемой области, а код для заголовка размещаем с помощью функции $APPLICATION->AddHeadS tring() в той же включаемой области. При этом наибольшая проблема - это исключить дублирование кода в заголовке, т.к. часто один и тот же плагин размещается на странице в нескольких местах, либо используются несколько разных плагинов от одного сервиса с одинаковым кодом в заголовке. Редактирование кода пользователем без навыков программирования под Битрикс опять таки становится затруднительным.
- Можно разместить коды аналогично способу 1, а уникальные идентификаторы, которые используют многие сервисы, вынести в init.php в виде констант. Данный метод может немного упростить процесс для программиста, но пользователь опять же остается не у дел.
- Создаем компонент, в который помещаем код плагина, настройки плагина выносим в параметры компонента. Это может упростить размещение плагина непосредственно на странице, однако редкие плагины размещаются на странице, почти всегда они находятся в хедере или футере, и нужно обладать достаточно большой смелостью, чтобы менять параметры компонентов, находящихся там, через визуальный редактор или режим правки.
Если же на одном экземпляре битрикс работают несколько сайтов, то процесс еще более усложняется.
Поэтому была поставлена задача: сделать модуль для централизованного управления кодами всех счетчиков, социальных сервисов, баннеров, подключаемых с внешних сайтов и даже, возможно, таких плагинов, как яндекс или google карты. При этом модуль должен быть максимально простым в использовании. Должна быть возможность подключения новых плагинов без правки шаблона сайта.
Модуль позволяет решать следующие задачи:
- Редактирование и добавление плагинов через административный интерфейс
- Создание групп плагинов для упрощения добавления новых плагинов на сайт без модификации шаблона сайта
- Создание и параметров плагинов и редактирование их значений независимо для каждого сайта
- Управление активностью плагинов (также независимо для каждого сайта)
- Страница редактирования и добавления плагинов, групп плагинов, параметров плагинов (редактор сайта может не иметь доступа к этой странице - права доступа устанавливаются в настройках модуля)
- Страница редактирования значений параметров (основная страница модуля, доступна из меню)

На картинке:
- Идентификатор плагина
- Название плагина (необязательно, предназначено только для административных интерфейсов)
- Сортировка (влияет на порядок плагина при отображении в группе)
- Привязка плагинов к группам (список групп редактируется на соседней вкладке)
- Код для области заголовка плагина. Данный код подключается только при первом вызове плагина на странице. Код может быть общим для нескольких плагинов, см. пункт 7
- Если эта галочка установлена, то код заголовка при выводе данного плагина будет помещен не в области "head" страницы, а непосредственно перед первым вызовом плагина на странице
- Кнопка привязки кода заголовка данного плагина к коду заголовка другого плагина - необходимо для случая, когда несколько плагинов используют один и тот же код заголовка (разные плагины одного сервиса), для предотвращения дублирования
- Кнопка вставки параметра (редактирование списка параметров осуществляется на соответствующей вкладке). Также доступны некоторые предустановленные параметры, например, URL текущей страницы, путь к шаблону сайта, текущий домен и т.д.
- Непосредственно код плагина
- С помощью выбора сайта в выпадающем списке можно задать код плагина, уникальный для сайта. Если лампочка горит зеленым, значит есть коды, уникальные для сайтов
- Пример вставленного параметра
Для размещения плагинов на сайте в модуле есть 2 компонента: "grain:plugin.single" и "grain:plugin.group".
Первый предназначен для размещения на сайте одного плагина, в качестве параметров принимает только ID выбранного плагина:
<?$APPLICATION->IncludeComponent( "grain:plugin.single", "", Array( "PLUGIN_ID" => "facebook_like", ) );?> |
Второй предназначен для размещения группы плагинов
В качестве параметров принимает ID выбранной группы
<?$APPLICATION->IncludeComponent( "grain:plugin.group", "", Array( "GROUP_ID" => "like", ) );?> |
или несколько идентификаторов плагинов
<?$APPLICATION->IncludeComponent(
"grain:plugin.group",
"",
Array(
"PLUGIN_ID" => Array("facebook_like","vk_like","twitter_tweet")
)
);?> |
Или, конечно же, через визуальный редактор:

Каким же образом можно добавить на сайт новый плагин, не затрагивая код в шаблоне сайта? Очень просто, для этого и существуют группы плагинов. Если, например, разместить на сайте группу плагинов "like" (с помощью компонента "grain:plugin.group"
, то в последующем, если добавить новый плагин через административную страницу и включить его в группу "like", он таким образом автоматически появится на сайте.Параметры
При заходе через меню на основную страницу модуля, пользователь может устанавливать значения параметров (список которых задается на странице редактирования плагинов). Параметры могут быть 3 типов: текст, текст. поле, список. Также на этой странице можно устанавливать активность плагинов (неактивные плагины не выводятся на сайте).

Распределение прав доступа
В настройках модуля можно задать один из трех уровней доступа к модулю:
- Просмотр параметров: пользователь имеет доступ к основной странице модуля, видит значения параметров, но не может их изменять
- Изменение параметров: пользователь имеет доступ к основной странице модуля, видит значения параметров, и может их изменять
- Полный доступ: пользователь имеет доступ ко всему функционалу модуля, в. т.ч. к странице редактирования плагинов
Модуль не использует базу данных для хранения кодов плагинов, данные хранятся в php файле в виде массива. Параметры хранятся в настройках модуля и получаются при помощи функции COption::GetOptionS tring(). При таких условиях кешировать выдаваемый модулем код не нужно.

Стоимость модуля - 600 руб. Действуют партнерские скидки.
Предлагаю опробовать модуль в действии, пробный период составляет 30 дней.
Подробнее о модуле:
Страница в Marketplace:
Справка:
Руководство по быстрому старту:
Другие мои модули:
