cotonti.com : [проект] Плагины - формат файлов https://www.cotonti.com Последние сообщения в теме Cotonti en Thu, 19 Feb 2026 21:55:24 -0000 Sergeich пт, 24 апр 2009 23:44:58 -0000 Fagot
	$path_lang_chr  = $cfg['plugins_dir']."/$e/lang/$e.$lang."(".$cfg['charset'].").lang.php";
	if (file_exists($path_lang_chr))
	{ require_once($path_lang_chr); }

это позволит разработчикам русскоязычных плагинов заранее готовить языковые файлы вида:
gallery.ru.(UTF-8).lang.php
gallery.ru.(windows-1251).lang.php
для различных кодировок,
а пользователям не париться с переименованиями и перекодированиями.]]>
пт, 24 апр 2009 16:48:48 -0000
esclkm ср, 04 мар 2009 00:17:38 -0000 dervan
Если при инсталляции плагина произошёл критический сбой, тогда из секции инсталляции возвращать строку с сообщением об ошибке, при получении которой прерывать установку плагина.

Т.е. код в system/core/admin/admin.plug.inc.php
				$action = 'install';
				include_once($extplugin_info);
				$adminmain .= "Done!<br />";
				...
будет выглядеть примерно так:
				$action = 'install';
				$installerror = include_once($extplugin_info);
				if (!empty($installerror))
				{
					// error handling
					...
				}
				else
				{
					$adminmain .= "Done!<br />";
					...

При такой реализации существующие плагины, в которых нет return(), переделывать не придётся.

Про интернационализацию сообщений об ошибках. Можно возвращать не само сообщение об ошибке, а отличный от 0 номер ошибки.]]>
вт, 03 мар 2009 20:03:53 -0000
Trustmaster чт, 25 дек 2008 04:30:33 -0000 Asmo
if (!defined('SED_CODE')) { die('Wrong URL.'); }

А то посмотрел тот же markitup, инсталяционные файлы не защищены и если бы код не был вынесен в отдельную функцию, то можно было бы через прямой доступ к файлу унинсталить плагин.

В случае с редактором вреда это принесет не много, а вот грохнутые таким образом таблицы какой нибудь доски объявлений - потеря ощутимая.]]>
чт, 25 дек 2008 04:09:00 -0000
Trustmaster чт, 18 дек 2008 03:59:13 -0000 medar И пока действительно есть время это сделать, пока плагинов не понаписали.]]> чт, 18 дек 2008 02:05:51 -0000 esclkm на сей момент знамя держим мы а не оливье.
на сей момент вся исполняемая часть setup файла содержит всего 1 строку
if ( !defined('SED_CODE') ) { die("Wrong URL."); }
и если мы после нее что-либо еще напишим, то не думаю, что что-либо пострабает.

на сегодняшний день для 125 версии плагинов с пяток не более. ну простите - за новостями коммунити слежу регулярно. и если вдруг плагин очень нужный и сделан весьма качественно то почему бы его чуть-чуть не подправить?
в итоге я думаю совместимость не пострадает.]]>
чт, 18 дек 2008 00:49:38 -0000
Trustmaster чт, 18 дек 2008 00:41:13 -0000 Sergeich чт, 18 дек 2008 00:22:51 -0000 Trustmaster ср, 17 дек 2008 23:38:35 -0000 esclkm ну почему в него не запихнуть install и unintall
просто когда 3 файла это создает дополнительную степень запутанности.]]>
ср, 17 дек 2008 21:48:25 -0000
esclkm меньше файлов проще понимание.]]> вт, 16 дек 2008 00:36:55 -0000 Trustmaster # medar : Кто знает, что понадобится плагинам в будущем ? Лучше сразу сделать универсальный вариант, а не ограничиваться только добавлением полей.
]]>
пн, 15 дек 2008 17:24:52 -0000
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   = "";

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

?>

пример: видим какие таблицы юзает - для удаления и видим как создавать таблицы) в общем все есть)]]>
пн, 15 дек 2008 04:51:26 -0000
medar # esclkm : А зачем надо 2 файла инсталл и унисталл?
не проще ли просто указать базу и поля которые в ней будут, а там в зависимости от действия или удалить или установить? Кто знает, что понадобится плагинам в будущем ? Лучше сразу сделать универсальный вариант, а не ограничиваться только добавлением полей.]]>
пн, 15 дек 2008 04:11:22 -0000
Trustmaster вс, 14 дек 2008 16:04:36 -0000 esclkm вс, 14 дек 2008 02:10:59 -0000 Trustmaster вс, 14 дек 2008 00:21:15 -0000 esclkm не проще ли просто указать базу и поля которые в ней будут, а там в зависимости от действия или удалить или установить?
и с ббкодами тоже самое: ббкод и через запятую все его параметры.
Зачем 2 файла не понимаю.]]>
сб, 13 дек 2008 21:13:39 -0000
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
Это опциональные файлы. Название - строгое. Внутренний формат - произвольный.

Автоматически выполняются соответственно при включении и выключении плагина.
Эти файлы нужны для плагинов, которые добавляют для своей работы дополнительные таблицы в базу, новый ббкоды в редактор или новые поля для страниц.]]>
пт, 21 ноя 2008 00:43:26 -0000