Что такое плагин?
Это php-код, который в дальнейшем инклюдится (вставляется) в код CMS в определенных местах, называемых "хуками". Плагины расширяют функционал сайта.
Плагин представляет собой папку с файлами, находящуюся в папке plugins. Название папки должно совпадать с именем плагина. Негласное соглашение - в имени плагина юзать только буквы английского алфавита и знак подчеркивания.
Пусть наш плагин называется
pluginname
Он должен/может содержать следующие файлы:
Файл сетапа плагина:
pluginname.setup.php - название должно быть строго таким. Файл обязательно должен быть.
Внутри в начале должна быть следующая конструкция:
<?php
/* ====================
[BEGIN_SED_EXTPLUGIN]
Code=pluginname
Name=Plugin name
Description=
Notes=
Version=1.0
Date=
Author=
Auth_guests=R
Lock_guests=W12345A
Auth_members=RW
Lock_members=12345A
[END_SED_EXTPLUGIN]
[BEGIN_SED_EXTPLUGIN_CONFIG]
[END_SED_EXTPLUGIN_CONFIG]
==================== */
defined('SED_CODE') or die("Wrong URL.");
if($action == 'install')
{
// Install
}
elseif($action == 'uninstall')
{
// Uninstall
}
Code - имя плагина
Name - название плагина, в вольной форме
Description - описание работы
Notes - вторая строка описания
Date - дата создания
Author - автор плагина
Дальше идут права юзеров при работе с данным плагином. Об этом в другом месте.
Еще ниже - блок [BEGIN_SED_EXTPLUGIN_CONFIG]...[END_SED_EXTPLUGIN_CONFIG] , о формате данных смотри в конце статьи.
Фактически, обязательное поле здесь только одно - Code= , но параметры прав доступа (Auth_ , Lock_) лучше все же не стирать.
Код, расположенный в местах // Install и // Uninstall автоматически выполняется соответственно при включении и выключении плагина.
Это нужно для плагинов, которые добавляют для своей работы дополнительные таблицы в базу, новый ббкоды в редактор или новые поля для страниц или юзеров.
Файл(ы) собственно плагина:
another_work_file.php - название может быть произвольным (главное, чтобы оно совпадало с File= внутри этого файла). Но опять же принято называть их по образу
pluginname.zone.php , где zone - это зона действия плагина (header, page, list, index, etc). Это не связано с системой, это применяется исключительно для лучшей читаемости. Название файла может быть любым.
Пусть файл называется
pluginname.pagetags.php
Итак, его содержимое:
<?php
/* ====================
[BEGIN_SED_EXTPLUGIN]
Code=pluginname
File=pluginname.pagetags
Part=main
Hooks=page.tags
Tags={MY_TAG}, {MY_ANOTHER_TAG}
Order=10
[END_SED_EXTPLUGIN]
==================== */
defined('SED_CODE') or die("Wrong URL.");
Поля
Code,
File и
Hooks - обязательные.
Code - имя плагина (должно совпадать с Code в
pluginname.setup.php)
File - имя данного файла (без .php)
Part - Название логической части плагина, необязательное поле. Обычно main
Hooks - Хук (место в ядре движка), где будет происходить подключение плагина. Список всех хуков -
здесь (надо бы его расписать с комментариями).
Order - Порядок обработки(Предназначено на случай если в системе установлены другие плагины которые использует указанный хук и последовательность включения этих плагинов играет важную роль).
Tags - тэги, которые создает данный плагин. Их нужно записать в нужное место шаблонов, которые затрагивает плагин, и туда будет выводиться html-контент, формируемый плагинами.
#1. Формат конфигурационных данных плагина
В блоке [BEGIN_SED_EXTPLUGIN_CONFIG] ... [END_SED_EXTPLUGIN_CONFIG] задаются поля, которые потом можно отредактировать на странице настроек плагина.
Формат не поменялся со времен Seditio:
[Variable] = [Order] : [Type] : [Values] : [Default] : [Clear name]
Order : Порядок отображения данного поля в админке
Type : Тип поля, один из 4х вариантов см. ниже.
Values : Для типов 'select' и 'radio', список значений, через запятую.
Default : Дефолтное значение поля.
Clear name : Текст, который будет написан рядом с этим полем в админке.
Типы полей :
string : Строка, максимум 255 символов
select : Выпадающий список с options , перечисленными в Values
radio : Радиокнопки
text : Текст в textarea.
Если Type указать не из этого списка, будет назначен тип text.
Самое главное. Примеры :
[BEGIN_SED_EXTPLUGIN_CONFIG]
myvar1=01:string::50:This is my first variable
myvar2=02:select:1,2,3,4,5,6,7,8,9,10:7:This is my second variable
myvar3=03:radio:Yes,No:Yes:This is my third variable
myvar4=04:text::Default text goes here:This is my fourth variable
[END_SED_EXTPLUGIN_CONFIG]
Если ваш плагин называется myplugin, то в коде будут доступны следующие переменные:
$cfg['plugin']['myplugin']['myvar1']
$cfg['plugin']['myplugin']['myvar2']
$cfg['plugin']['myplugin']['myvar3']
$cfg['plugin']['myplugin']['myvar4']