проект статьи
| medar |  | 
|---|---|
| Что такое плагин? Это 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 файла инсталл и унисталл? не проще ли просто указать базу и поля которые в ней будут, а там в зависимости от действия или удалить или установить? и с ббкодами тоже самое: ббкод и через запятую все его параметры. Зачем 2 файла не понимаю. littledev.ru - мой маленький зарождающийся блог о котонти. снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты | 
| Trustmaster |  | 
|---|---|
| В этих этих скриптах разработчик плагина (и никто иной) указывает действия, которые необходимо выполнить при установке или удалении плагина. И базы с полями и ббкодами тут не при чем. May the Source be with you! | 
| esclkm |  | 
|---|---|
| имхо немного излишне... мне нравилось как сделан инсталл файл в e107/ очень просто и логично. littledev.ru - мой маленький зарождающийся блог о котонти. снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты | 
| Trustmaster |  | 
|---|---|
| И каким образом он там сделан? May the Source be with you! | 
| medar |  | 
|---|---|
| # esclkm : А зачем надо 2 файла инсталл и унисталл?Кто знает, что понадобится плагинам в будущем ? Лучше сразу сделать универсальный вариант, а не ограничиваться только добавлением полей. rangjungyeshe.ru | 
| esclkm |  | 
|---|---|
| # 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 |  | 
|---|---|
| # medar : Кто знает, что понадобится плагинам в будущем ? Лучше сразу сделать универсальный вариант, а не ограничиваться только добавлением полей. May the Source be with you! | 
| esclkm |  | 
|---|---|
| Все равно я за 1 файл, ведь в нем можно сделаь так: if (install){...} else {...} меньше файлов проще понимание. littledev.ru - мой маленький зарождающийся блог о котонти. снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты | 
| esclkm |  | 
|---|---|
| посмотрите файл setup.php - разве он не пустой? ну почему в него не запихнуть install и unintall просто когда 3 файла это создает дополнительную степень запутанности. littledev.ru - мой маленький зарождающийся блог о котонти. снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты | 
| Trustmaster |  | 
|---|---|
| Лично мне тоже кажется логичнее, если бы все это было в файле setup.php с соответствующими условием. Но раз Оливье в v125 сделал раздельные файлы, то мы этот момент пока трогать не стали. Думаете, нужно? May the Source be with you! | 
| Sergeich |  | 
|---|---|
| думаем нет, т.к. совместимость пострадать может, а этого на первом этапе нужно постараться избежать по максимуму. | 
| Trustmaster |  | 
|---|---|
| Вопрос: много плагинов под v125 написано? May the Source be with you! | 
| esclkm |  | 
|---|---|
| простите! на сей момент знамя держим мы а не оливье. на сей момент вся исполняемая часть setup файла содержит всего 1 строку 
if ( !defined('SED_CODE') ) { die("Wrong URL."); }
и если мы после нее что-либо еще напишим, то не думаю, что что-либо пострабает.на сегодняшний день для 125 версии плагинов с пяток не более. ну простите - за новостями коммунити слежу регулярно. и если вдруг плагин очень нужный и сделан весьма качественно то почему бы его чуть-чуть не подправить? в итоге я думаю совместимость не пострадает. littledev.ru - мой маленький зарождающийся блог о котонти. снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты | 
| medar |  | 
|---|---|
| Вообще, держать install и uninstall в файле setup логично. И пока действительно есть время это сделать, пока плагинов не понаписали. rangjungyeshe.ru |