Создание плагина для 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
Комментарии
04.07.2010 15:58
08.07.2010 04:42
21.07.2010 17:46
21.08.2010 23:47
+1
05.10.2010 14:42
19.10.2010 22:22
06.12.2010 03:11
18.01.2011 15:47
08.04.2011 14:46
11.05.2011 14:15
-10000000000000000000 )))))))))))))
24.10.2011 00:40
29.04.2013 17:47
RSS лента комментариев этой записи