Forums / National / Russian / Модули и плагины / [проект] Плагины - формат файлов

12>>>

проект статьи

medar
#1 2008-11-21 00:43
Что такое плагин?
Это 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]
==================== */
if ( !defined('SED_CODE') ) { die("Wrong URL."); }


Code - имя плагина
Name - название плагина, в вольной форме
Description - описание работы
Notes - вторая строка описания
Date - дата создания
Author - автор плагина
Дальше идут права юзеров при работе с данным плагином. Об этом в другом месте.

Фактически, обязательное поле здесь только одно - Code= , но параметры прав доступа (Auth_ , Lock_) лучше все же не стирать.

Файл(ы) собственно плагина:

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}
[END_SED_EXTPLUGIN]
==================== */
if (!defined('SED_CODE')) { die('Wrong URL.'); }


Поля Code, File и Hooks - обязательные.
Code - имя плагина (должно совпадать с Code в pluginname.setup.php)
File - имя данного файла (без .php)

Part - Возможно, область обработки вывода результатов работы плагина в tpl. Доподлино неизвестно, что это значит этот параметр, документация Seditio хранит молчание на этот счет. Возможно, это недоработанная вещь. Как правило прокатывает там ставить main.

Hooks - Хук (место в ядре движка), где будет происходить подключение плагина. Список всех хуков - здесь (надо бы его расписать с комментариями).

Tags - тэги, которые создает данный плагин. Их нужно записать в нужное место шаблонов, которые затрагивает плагин, и туда будет выводиться html-контент, формируемый плагинами.

Файлы инсталляции/деинсталляции

pluginname.install.php
pluginname.uninstall.php
Это опциональные файлы. Название - строгое. Внутренний формат - произвольный.

Автоматически выполняются соответственно при включении и выключении плагина.
Эти файлы нужны для плагинов, которые добавляют для своей работы дополнительные таблицы в базу, новый ббкоды в редактор или новые поля для страниц.
rangjungyeshe.ru
esclkm
#2 2008-12-13 21:13
А зачем надо 2 файла инсталл и унисталл?
не проще ли просто указать базу и поля которые в ней будут, а там в зависимости от действия или удалить или установить?
и с ббкодами тоже самое: ббкод и через запятую все его параметры.
Зачем 2 файла не понимаю.
littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты
Trustmaster
#3 2008-12-14 00:21
В этих этих скриптах разработчик плагина (и никто иной) указывает действия, которые необходимо выполнить при установке или удалении плагина. И базы с полями и ббкодами тут не при чем.
May the Source be with you!
esclkm
#4 2008-12-14 02:10
имхо немного излишне... мне нравилось как сделан инсталл файл в e107/ очень просто и логично.
littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты
Trustmaster
#5 2008-12-14 16:04
И каким образом он там сделан?
May the Source be with you!
medar
#6 2008-12-15 04:11
# esclkm : А зачем надо 2 файла инсталл и унисталл?
не проще ли просто указать базу и поля которые в ней будут, а там в зависимости от действия или удалить или установить?
Кто знает, что понадобится плагинам в будущем ? Лучше сразу сделать универсальный вариант, а не ограничиваться только добавлением полей.
rangjungyeshe.ru
esclkm
#7 2008-12-15 04:51
# Trustmaster : И каким образом он там сделан?
Пример:
<?php
  /*
  -----------------------------------------------------------------------------------------------------------+
  |
  |	e107 website system
  |	User Medals PLUGIN
  |
  |	Released under the terms and conditions of the
  |	GNU General Public License Version 2 (http://gnu.org).
  |
  -----------------------------------------------------------------------------------------------------------+
  | Creator: esclkm 2007.
  |
  |
  |
  |
  +----------------------------------------------------------------------------------------------------------+
  */

//-------Совершенству нет предела----------------------------------------------------------------------------+
  @include_once(e_PLUGIN."user_medals/languages/".e_LANGUAGE.".php");
  @include_once(e_PLUGIN."user_medals/languages/English.php");

//PLUGIN INFO------------------------------------------------------------------------------------------------+

  $eplug_name        = "User_medals";
  $eplug_version     = "2.5";
  $eplug_author      = "esclkm";
  $eplug_url         = "";
  $eplug_email       = "alexander1964@tut.by";
  $eplug_description = UM_LANG_LAN38;
  $eplug_compatible  = "e107v0.7.6+";
  $eplug_readme      = "readme.txt";
  $eplug_compliant   = TRUE;
  $eplug_module      = FALSE;

//PLUGIN FOLDER----------------------------------------------------------------------------------------------+

  $eplug_folder      = "user_medals";

//PLUGIN MENU FILE-------------------------------------------------------------------------------------------+

  $eplug_menu_name   = "";

//PLUGIN ICONS AND CAPTION-----------------------------------------------------------------------------------+

  $eplug_conffile    = "admin_medals.php";

//PLUGIN ICONS AND CAPTION-----------------------------------------------------------------------------------+

  $eplug_logo        = "icon_32.png";
  $eplug_icon        = "$eplug_folder/icon_32.png";
  $eplug_icon_small  = "$eplug_folder/icon_16.png";
  $eplug_caption     = UM_LANG_LAN6;
  
//List of preferences -----------------------------------------------------------------------------------------------
$eplug_prefs = array(
"umedals_forum" => 1,
"umedals_profile" => 1,
"umedals_adminprofile" => 1,
);

//MYSQL TABLES TO BE CREATED---------------------------------------------------------------------------------+

  $eplug_table_names = array("medals", "medals_awarded");

//MYSQL TABLE STRUCTURE--------------------------------------------------------------------------------------+

  $eplug_tables = array(

  "CREATE TABLE ".MPREFIX."medals (

  medal_id     int(11)       NOT NULL auto_increment,
  medal_name   varchar(50)   NOT NULL default '',
  medal_obr    varchar(120)  NOT NULL default '',
  medal_text   text          NOT NULL default '',

   PRIMARY KEY  (medal_id)) TYPE=MyISAM;",

  "CREATE TABLE ".MPREFIX."medals_awarded (

  awarded_id       int(11)       NOT NULL auto_increment,
  medal_id         int(11)       NOT NULL default '0',
  awarded_user_id  varchar(11)   NOT NULL default '',
  awarded_date     int(10)       NOT NULL default '',
  dop_text         varchar(200)  NOT NULL default '',	  

   PRIMARY KEY  (awarded_id)) TYPE=MyISAM;");

//LINK TO BE CREATED ON SITE MENU--------------------------------------------------------------------------+

  $eplug_link      = TRUE;
  $eplug_link_name = UM_LANG_LAN6;
  $eplug_link_url  = e_PLUGIN."$eplug_folder/medals.php";

//MESSAGE WHEN PLUGIN IS INSTALLED-------------------------------------------------------------------------+

  $eplug_done = UM_LANG_LAN39;

//SAME AS ABOVE BUT ONLY RUN WHEN CHOOSING UPGRADE---------------------------------------------------------+

  $upgrade_add_prefs    = $eplug_prefs;
  $upgrade_remove_prefs = "";
  $upgrade_alter_tables = "";
  $eplug_upgrade_done   = "";

//---------------------------------------------------------------------------------------------------------+

?>

пример: видим какие таблицы юзает - для удаления и видим как создавать таблицы) в общем все есть)
littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты
Trustmaster
#8 2008-12-15 17:24
# medar : Кто знает, что понадобится плагинам в будущем ? Лучше сразу сделать универсальный вариант, а не ограничиваться только добавлением полей.
May the Source be with you!
esclkm
#9 2008-12-16 00:36
Все равно я за 1 файл, ведь в нем можно сделаь так: if (install){...} else {...}
меньше файлов проще понимание.
littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты
esclkm
#10 2008-12-17 21:48
посмотрите файл setup.php - разве он не пустой?
ну почему в него не запихнуть install и unintall
просто когда 3 файла это создает дополнительную степень запутанности.
littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты
Trustmaster
#11 2008-12-17 23:38
Лично мне тоже кажется логичнее, если бы все это было в файле setup.php с соответствующими условием. Но раз Оливье в v125 сделал раздельные файлы, то мы этот момент пока трогать не стали. Думаете, нужно?
May the Source be with you!
Sergeich
#12 2008-12-18 00:22
думаем нет, т.к. совместимость пострадать может, а этого на первом этапе нужно постараться избежать по максимуму.
Trustmaster
#13 2008-12-18 00:41
Вопрос: много плагинов под v125 написано?
May the Source be with you!
esclkm
#14 2008-12-18 00:49
простите!
на сей момент знамя держим мы а не оливье.
на сей момент вся исполняемая часть setup файла содержит всего 1 строку
if ( !defined('SED_CODE') ) { die("Wrong URL."); }
и если мы после нее что-либо еще напишим, то не думаю, что что-либо пострабает.

на сегодняшний день для 125 версии плагинов с пяток не более. ну простите - за новостями коммунити слежу регулярно. и если вдруг плагин очень нужный и сделан весьма качественно то почему бы его чуть-чуть не подправить?
в итоге я думаю совместимость не пострадает.
littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты
medar
#15 2008-12-18 02:05
Вообще, держать install и uninstall в файле setup логично.
И пока действительно есть время это сделать, пока плагинов не понаписали.
rangjungyeshe.ru

12>>>