0 Пользователей и 1 Гость просматривают эту тему.
  • 2 Ответов
  • 4188 Просмотров
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Создание плагина для 1.5
« : 03.01.2007, 15: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, 19:59:06 от userxp »
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
myplugin.xml
« Ответ #1 : 03.01.2007, 15: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>
Регистр букв и имя файла здесь не причём. Пишите, что захотите :)

4. <description>Описание плагина</description>
В общем-то это описание, но! есть нюанс ;)
Здесь уже можно вставить фразу, которая будет локализована через 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, 19:47:54 от userxp »
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
myplugin.php
« Ответ #2 : 03.01.2007, 19: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, 02:32:22 от userxp »
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[how to] Красота JHTML, или создание элементов формы с

Автор Professor

Ответов: 11
Просмотров: 21134
Последний ответ 27.12.2012, 18:14:38
от BaR
Как вы "въехали" в создание расширений?

Автор aanvale

Ответов: 4
Просмотров: 1683
Последний ответ 13.10.2012, 21:44:25
от passer
Сортировка статей по итоговому рейтингу плагина Extravote. Предлагаю коллективный мозговой штурм!

Автор deniro21

Ответов: 3
Просмотров: 4551
Последний ответ 04.03.2012, 23:56:54
от SamDecKs
Создание таблицы в БД при установке плагина

Автор mohax

Ответов: 2
Просмотров: 1489
Последний ответ 14.06.2011, 17:35:46
от mohax
Создание плагина всплывающего изображения

Автор CTPZ

Ответов: 1
Просмотров: 1212
Последний ответ 25.04.2011, 12:09:12
от moskitos80