|
Разработка плагина происходит следующим образом:
- Проектирование плагина
- Создание и установка первичного дистрибутива
- Разработка кода плагина
- Создание дистрибутива
Проектирование плагина с точки зрения представления в системе включает:
- Определение режимов работы плагина («Модуль управления», «Спецблок»), что определяет в свою очередь, наличие файлов модуля управления и спецблока.
- Выбор уникального идентификатора плагина. Далее по тексту на него будем ссылаться, как на PLUGIN_ID
Первичный дистрибутив нужен для первичной установки плагина, чтобы система сделала все необходимые операции для добавления и регистрации плагина.
Первичный дистрибутив можно создать, скопировав пример плагина «sample», доступной в дистрибутиве системы:
- Скопировать папку _local/plugins_distr/sample/ со всем ее содержимым в _local/plugins/PLUGIN_ID, где PLUGIN_ID – директория, имя которой совпадает с PLUGIN_ID
- Переименовать используемые файлы плагина и удалить неиспользуемые
- Изменить файл описания для установки плагина, указав все требуемые значения. Подробнее о файле описания – в разделе «Файл описания плагина»
- Произвести установку первичного дистрибутива
- Добавление специального блока в Менеджере сайта на тестовую страницу если будет идти разработка спецблока. Указание небольшого времени жизни кэша спецблока.
Файл описания – это INI-файл, содержащий следующие настройки:
|
Параметр |
Допустимые значения |
Описание |
Комментарии |
|
id |
Латинские символы в нижнем регистре, цифры и «_» |
Идентификатор |
|
|
version |
XX.YY |
Версия |
XX, YY – двузначные числа |
|
admin |
Название файла |
Файл модуля управления |
|
|
specblock |
Название файла |
Файл специального блока |
|
|
config |
Название файла |
Файл настроек |
Устаревший способ хранения настроек, используйте файлы из папки «options». |
|
other |
Название файлов |
Прочие файлы |
Файлы перечисляются через запятую |
|
icon |
Название файла |
Файл иконки модуля управления |
|
|
install_as |
owner::plugin, owner::module::plugin |
Модуль, в который будет установлен плагин
|
owner, module, plugin состоят из латинских символов в нижнем регистре цифр и «_» |
|
specify_install_as |
yes/no |
Возможность задания своего названия модулю |
Зарезервировано |
|
requirements |
plugin::version |
Требования на версии других плагинов
|
Зарезервировано |
|
copy_allowed |
yes/no |
Возможно ли копирование плагина
|
Зарезервировано |
|
sql_install |
Название файла |
SQL скрипт запускаемый во время инсталляции плагина
|
|
|
sql_uninstall |
Название файла |
SQL скрипт запускаемый во время удаления плагина
|
|
Пример файла описания:
; ; unique plugin ID (alphanumeric in lower case and undescore) id = sample ; current plugin version in format XX.YY version = 1.00 ; specblock and admin file name (at least one of them should be specified) specblock = my_specblock.php admin = my_admin.php ; configuration file name config = my_config.php ; other files other = my_functions.php, my_class.php ; sql_install_file ; sql_install = install.sql ; sql_uninstall_file ; sql_uninstall = uninstall.sql ; icon that will be displayed on start page (optional) icon = icon_sample.gif ; list of allowed modules where plugin will be installed to (it is required for now, later it will be optional) ; install_as module will be a real module later - system just checks for such module existence ; module links are considered as NOT installed for now install_as = modules::news::sample, modules::sample ; manual specifying where plugin has to be installed as (reserved) ;specify_install_as = ; required versions on existing plugins (reserved) ;requirements = ; if the code copying allowed (reserved) ;copy_allowed =
После установки первичного дистрибутива в зависимости от режима работы плагина, можно приступать к созданию кода плагина.
Код плагина должен удовлетворять следующим требованиям:
- Работа в локальном контексте, т.е. внутри метода класса
- Не использовать глобальные переменные. Если используются глобальные переменные, то они должны иметь префикс _plg_, например, _plg_config.
- Не осуществлять отображение стандартными методами (echo, print, …)
- Не выводить HTTP-заголовки (header).
Для вывода результатов работы плагина необходимо в коде плагина присвоить переменной $resultHtml требуемое значение. Это значение, в зависимости от режима работы, будет выведено в модуле управления или в указанном специальном блоке на публичной части сайта.
В подключаемые файлы модуля управления и специального блока передается ряд параметров системы управления. Они передаются в массиве $pluginParams.
Общие параметры модуля управления и специального блока:
|
Параметр |
Описание |
|
plugin_id |
Идентификатор плагина |
|
config_path |
Путь к директории размещения конфигурационного файла плагина |
|
config_file |
Путь к конфигурационному файлу плагина |
|
code_path |
Путь размещения кода дистрибутива |
|
templates_path |
Путь к директории размещения шаблонов плагина |
|
root_path_www |
URL сайта |
|
side |
Режим работы модуля admin/front |
|
lang |
2-буквенная аббревиатура языка интерфейса |
|
lang_data |
2-буквенная аббревиатура языка данных (locale)
|
|
company_email |
e-mail компании |
|
company_robot_email |
e-mail робота (автоответчика) компании |
|
company_name |
Название компании |
Также в подключаемые файлы модуля управления и специального
блока в переменной $api передается объект класса AMI_PluginState, предоставляющий разработчику
следующую функциональность по управлению параметрами плагина:
- Создание
дополнительных параметров спецблока плагина;
- Задание
правил для отображения этих параметров в всплывающем окне при настройке
спецблока.
Особые параметры специального блока:
|
Параметр |
Описание |
|
active_script |
Активная страница сайта |
|
active_module |
Активный модуль |
API (Application Programming Interface)
С версии 5.10.0 для разработчиков в системе представлен расширенный API.
Документация по Amiro.CMS API представляет собой ряд руководств, предназначенных для программистов, знакомых с PHP и JavaScript. Уровень требуемых знаний зависит от сложности поставленных перед разработчиком задач.
Для создания дистрибутива необходимо:
- Скопировать код установленного плагина в дистрибутив
- Удалить плагин через панель управления, модуль «Мастер плагинов»
- Произвести установку плагинов в модуле «Мастер плагинов»
- При изменении файла конфигурации, для того чтобы изменения вступили в силу, необходимо:
- Увеличить версию плагина
- Произвести синхронизацию плагина с дистрибутивом
- В связи с тем, что конфигурация чаще всего меняется при начальной работе с плагином, рекомендуется начинать указание версии с 0, например, 00.01. Это позволит сделать выпуск первой версии со значением 01.00
- В зависимости от настроек хостинга, в случае синтаксической ошибки PHP, ошибка может быть или отображена на экран, или показывается пустой экран. Поэтому если отображается пустой экран, то необходимо проверить код на наличие PHP ошибок.
- Так как разработка идет уже на предустановленном плагине, то при сборке дистрибутива необходимо помнить, что удаление плагина, удаляет и все рабочие файлы. Поэтому рекомендуется:
- Перед сборкой дистрибутива делать резервную копию существующего кода или фиксировать изменения в системе контроля версий
- Использовать плагин, который предназначен только для сбора дистрибутивов. Например, создается плагин distr_test и делается установка/удаление только этого плагина
- Рекомендуется разрабатывать код плагина таким образом, чтобы он мог работать на любом хостинге.
|