Создание плагина для Joomla 1.5

05/06/2009 Создание плагина Joomla 1.5

Эти практические рекомендации должны предоставить Вам основы, для того что бы могли создавать свои плагины. Большинство плагинов в Joomla состоят из одного файла, но так же потребуется еще установочный файл XML.

Создаем установочный файл

Как и все адоны в Joomla? плагины легко устанавливаются через .zip файлы (так же поддерживаются .tar.gz). Но они должны иметь правильный установочный XML файл. Вот пример такого файла для категорий searchbot плагина:

<?xml version="1.0" encoding="iso-8859-1"?>
<install version="1.5" type="plugin" group="search">
<name>Categories searchbot</name>
<author>Joomla! Project</author>
<creationDate>November 2005</creationDate>
<copyright>(C) 2005 Open Source Matters. All rights reserved.</copyright>
<license>GNU/GPL</license>
<authorEmail>admin@joomla.org</authorEmail>
<authorUrl>www.joomla.org</authorUrl>
<version>1.1</version>
<description>Allows searching of Categories information</description>
<files>
<filename plugin="categories.searchbot">categories.searchbot.php</filename>
</files>
<params>
<param name="search_limit" type="text" size="5" default="50" label="Search Limit" description="Number of search items to return"/>
</params>
</install>

Как можно видеть это практически такой же XML, который использовался в модуле и компоненте. Различие состоит в том, что в теге <install> появилась группа group="xxx" и расширенная информация в теге <filename>. Эта информация говорит Joomla в какую директорию копировать файл и в какую группу добавлять плагин.

Если Вы создаете плагин , который будет отвечать на сущестующие основные события, то группа должна соответствовать этим событиям. Например  group="authentication" или group="user". В создании нового плагина, отвечающего за основные события важно что бы имя плагина было уникально. И не совпадало с другими именами плагинов.

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

Создаем плагин

В Joomla 1.5, в отличие от Joomla 1.0 ввели более объектно-ориентированный метод написания плагинов. Пример шаблона для плагина:

<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
 
// Import library dependencies
jimport('joomla.event.plugin');
 
class plg<PluginGroup><PluginName> 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 plg<PluginGroup><PluginName>( &$subject )
{
parent::__construct( $subject );
 
// load plugin parameters
$this->_plugin = > JPluginHelper::getPlugin( '<GroupName>', '<PluginName>' );
$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 true;
}
 
}
?>  

Использование плагина в коде

Итак Вы создали плагин, наверняка нужно его теперь вывести. В ядре Joomla встроенно достаточно много событий с помощью которых можно выводить плагины. Код будет таким:

$dispatcher =& JDispatcher::getInstance(); $results = $dispatcher->trigger( '<EventName>', <ParameterArray> );
 

Здесь важно отметить что параметры должны быть в массиве. Сама функция получит параметры как единственное значение.

Если Вы создаете плагин, для неосновного случая,  так же важно не забыть активировать его, после того как Вы установили его. И конечно предшествовать любой ссылке Вашего плагина должна команда JPluginHelper::importPlugin().

 

 

 


10 

Комментарии   

 
+2 Professor
04.07.2010 15:58
Может я что то не правильно делаю, но у тебя код не видно целиком. Вся информация теряет смысл.
 
 
-15 sharpmaster
08.07.2010 04:42
открывайте страницу в Internet Explorer-е
 
 
+17 alexok
21.07.2010 17:46
Никогда не открывайте страницу в Explorer'e!!! :))) мозила, хром, сафари вот ваши лучшие друзья)
 
 
+5 Прохожий
21.08.2010 23:47
Цитирую alexok:
Никогда не открывайте страницу в Explorer'e!!! :))) мозила, хром, сафари вот ваши лучшие друзья)

+1
 
 
+1 ikozlov
05.10.2010 14:42
Статься действительно не очень!
 
 
-3 ппц
19.10.2010 22:22
статья ГОВНО
 
 
+5 mazay
06.12.2010 03:11
ничё не понял... общие "фразы" и только. Живые примеры в студию...
 
 
+1 Alex
18.01.2011 15:47
stat'ja hujna polneishaja
 
 
+2 goplit
08.04.2011 14:46
Статья гавно полное... поподробнее бы
 
 
-5 Explorer
11.05.2011 14:15
Цитирую Евгений Вольф:
Цитирую Прохожий:
Цитирую alexok:
Никогда не открывайте страницу в Explorer'e!!! :))) мозила, хром, сафари вот ваши лучшие друзья)

+1

+101!!!

-10000000000000000000 )))))))))))))
 
 
+1 TimurNN
24.10.2011 00:40
Подскажите пожалуйста какой код отвечает за создание вкладов в плагине, есть один плагин, параметров настройки в нём много, поэтому хотелось бы разбить на 2 вкладки.
 
 
+1 Администратор
29.04.2013 17:47
Статья действительно гавно, я ее писал в туалете. Вот и все )