LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
28.05.2012, 03:30:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Создание плагина для 1.5  (Прочитано 2755 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
userxp
Администратор
*******

Репутация: +400/-6
Offline Offline

Пол: Мужской
Сообщений: 3227


Злой и ужасный бармалей


« : 03.01.2007, 16:37:49 »

Плагин (бывший мамбот) можно сделать аж тремя(!!!) вариациями.

1. Old way (Legacy mambot) - по старинке, как в 1.0.
для разработки новых плагинов не рекомендуется, существует только для совместимости со старыми.
требуется включение режима legacy mode в админке джумлы.

2. New way (new API supported)
Промежуточный вариант. В таком формате сейчас (для бета 1) оригинальные плагины, в силу исторически сложившихся причин. Для новых разработок рекомендуется 3-ий формат.

3. Extended new object scheme
Новый формат для разработки новых плагинов для 1.5. Не совместим с 1.0.
Вот его и будем рассматривать.

Пример плагина мы обзавём MyPlugin и будет он работать в материалах (для com_content).
примечание: рекомендую все имена файлов и их расширений писать только маленькими буквами (!!!)

Плагин как и раньше, состоит из двух основных файлов - myplugin.xml и myplugin.php
Далее уже появляются различия между 1.0 и 1.5 - любой плагин в 1.5 может быть локализован с помощью ini-файла.
И тут очень важно имя файла.
Выглядит оно вот так: {код_языка}.plg_{группа}_{название_плагина}.ini

ПРИМЕР: для русского языка, плагин с именем файла myplugin.php и обработкой событий в контенте будет выглятеть как
ru-RU.plg_content_myplugin.ini

Внимание (!!!)
физическая кодировка XML и PHP файлов - ANSI (iso-8859-1 или win-1251)
кодировка языковых INI-файлов - UTF-8



текст в разработке
« Последнее редактирование: 03.01.2007, 20:59:06 от userxp » Записан
 
userxp
Администратор
*******

Репутация: +400/-6
Offline Offline

Пол: Мужской
Сообщений: 3227


Злой и ужасный бармалей


« Ответ #1 : 03.01.2007, 16:57:52 »

рассмотрим теперь инсталлятор плагина myplugin.xml:

<?xml version="1.0" encoding="iso-8859-1"?>
<install version="1.5" type="plugin" group="content">
   <name> Название плагина </name>
   <author> имя разработчика </author>
   <creationDate> дата </creationDate>
   <copyright> копирайт </copyright>
   <license> лицензия </license>
   <authorEmail> email автора </authorEmail>
   <authorUrl> web сайт автора </authorUrl>
   <version> версия плагина </version>
   <description>Описание плагина</description>
   <files>
      <filename plugin="myplugin">myplugin.php</filename>
      <filename>mypluginfolder/index.htm</filename>
      ...
   </files>
   <languages>
      <language tag="ru-RU">ru-RU.plg_content_myplugin.ini</language>
      <language tag="en-GB">en-GB.plg_content_myplugin.ini</language>
      ...
   <languages>
   <params>
      <param .../>
      <param .../>
      <param .../>
      ...
   </params>

</install>


1. <?xml version="1.0" encoding="iso-8859-1"?>
оставляем без изменеий

2. <install version="1.5" type="plugin" group="content">
type="plugin" - говорим, что это плагин
group="content" - для группы контент (вызывается с другими плагинами в составе группы content).
Будет обрабатывать вызовы из компонента com_content

3. <name> Название плагина </name>
Названия плагина, то есть так, как он будет отображаться в списке плагинов.
Поскольку уже есть определённая традиция, то название следует писать таким образом: Группа - название, а именно:
<name>Content - MyPlugin</name>
Регистр букв и имя файла здесь не причём. Пишите, что захотите Azn

4. <description>Описание плагина</description>
В общем-то это описание, но! есть нюанс Wink
Здесь уже можно вставить фразу, которая будет локализована через ini-файл.
Но об этом в локализации.

5. Файлы, а точнее, раздел <files> ... </files>
<filename plugin="myplugin">myplugin.php</filename> - это первый, основной исполняемый файл плагина
Об этом говорит запись plugin="myplugin"
Далее перечисляются второстепенные файлы, необходимые для работы плагина (это уже определяется самим разработчиком, нужны они ему или нет).
Если такие файлы есть, то их лучше ложить в дополнительную папку, как в примере:
<filename>mypluginfolder/index.htm</filename>
Имя папки - на ваше усмотрение, однако, не забывайте скопировать туда "пустышку" index.htm.

6. Языковые файлы
   <languages>
      <language tag="ru-RU">ru-RU.plg_content_myplugin.ini</language>
      <language tag="en-GB">en-GB.plg_content_myplugin.ini</language>
      ...
   <languages>

параметр tag="ru-RU" указывает имя папки, а точнее, что файл ru-RU.plg_content_myplugin.ini будет скопирован в папку /administrator/language/ru-RU/

7. Параметры
   <params>
      <param .../>
      <param .../>
      ...
   </params>
Параметры определяют настройки плагина и отображаются в правой части страницы его настроек.
Данные параметра зависят от его типа.
Данные параметров описаны здесь: http://joomlaforum.ru/index.php/topic,9605.0.html

Параметры бывают однострочные и многострочные.
Однострочный параметр описывается в пределах одной пары скобок <param name="..." ... />
Многострочный параметр описывает ещё дополнительные опции выбора. Например:

<param name="enable" type="radio" default="0" label="ENABLE_LABEL" description="ENABLE_DESC">
   <option value="0">No</option>
   <option value="1">Yes</option>
</param>

текст в разработке
« Последнее редактирование: 03.01.2007, 20:47:54 от userxp » Записан
userxp
Администратор
*******

Репутация: +400/-6
Offline Offline

Пол: Мужской
Сообщений: 3227


Злой и ужасный бармалей


« Ответ #2 : 03.01.2007, 20:49:56 »

главный исполняемый файл плагина: myplugin.php
шаблон кода плагина:
<?php
// no direct access
defined'_JEXEC' ) or die( 'Restricted access' );

// Import library dependencies
jimport('joomla.application.plugin.helper');

class <
EventHandlerName> extends JPlugin
{
   
/**
    * Constructor
    *
    * For php4 compatability we must not use the __constructor as a constructor for
    * plugins because func_get_args ( void ) returns a copy of all passed arguments
    * NOT references.  This causes problems with cross-referencing necessary for the
    * observer design pattern.
    */
    
function <EventHandlerName>( & $subject )
    {
            
parent::__construct$subject );
            
// load plugin parameters
            
$this->_plugin = & JPluginHelper::getPlugin'<GroupName>''<PluginFileName>' );
            
$this->_params = new JParameter$this->_plugin->params );
    }

    
/**
    * Plugin method with the same name as the event will be called automatically.
    */
    
function <EventName>()
    {
        global 
$mainframe;
        
// Plugin code goes here.
        
return;
    }
}
$dispatcher =& JEventDispatcher::getInstance();
$dispatcher->attach(new <EventHandlerClass>($dispatcher));
?>


<EventHandlerName>
- имя класса плагина. Обычно совпадает с именем файла.
<EventName>
- обрабатываемое событие (onPrepareContent, onAfterDisplayTitle и т.д.)
<GroupName>
- группа/категория (папка), где лежит плагин.
<PluginFileName>
- имя файла плагина (т.е. этого же файла).

текст в разработке
« Последнее редактирование: 05.01.2007, 03:32:22 от userxp » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet