проект статьи
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
|