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

05/06/2009 Разработка модуля Joomla 2.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().

 

 

 


0