Формат файлов плагинов

Что такое плагин?
Это 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']

No comments yet
Only registered users can post new comments