细说Joomla开发插件

Joomla插件对于Joomla框架是一个灵活而强大的。它不仅可以用来处理插件触发的事件的核心应用和扩展,也可使Joomla的第三方扩展具备强大的可扩展性。
所以这里细说一下插件开发的基本知识作为你开发自己插件。大多数插件组成的只是一个单一的代码文件,但能在Joomla中正确安装插件的代码,它必须被打包成一个安装文件,可以被Joomla处理的安装程序。
如何创建插件的安装程序
在Joomla所有插件文件中,支持.zip和.tar.gz两个类型文件包的插件,并且文件包中必须包含一个XML文件,此XML文件就类似一个插件对象,里面包含这个插件所用到的一些列属性。这里举个搜索插件中的XML文件:

<install version="1.5" type="plugin" group="search">
<name>Categories searchbot</name>
<author>Joomla! Project</author>
<creationDate>02/29/2012</creationDate>
<copyright>(C) 2012 CCJK INC. All rights reserved.</copyright>
<license>GNU/GPL</license>
<authorEmail>admin@ccjk.com</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文件结构就类似Joomla的模板的XML文件一样,包括版本、作者、版权、文件等信息。请注意几个重要的属性,一个是group,一个是filename,这两个元素的值是用来告诉Joomla复制哪些文件,并把这个插件添加到哪个插件组中。
创建插件
Joomla的插件开发是属于一个面向对象方式的开发,这种面向对象的开发会涉及编写JPlugin的子类,这个JPlugin是一个基类,用于实现插件的基本属性。在开发的插件的方法中,以下的属性可用:


  1. $this->params: 这个是由管理员设置的属性。

  2. $this->_name: 插件的名字。

  3. $this->_type: 插件所属的插件组。


下面是一个插件代码的例子,<PluginGroup> 代表插件所属的插件组的名称,<PluginName>代表插件的名称,请注意,在PHP中的类和函数名是区分大小写的。
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
// Import library dependencies
jimport('joomla.plugin.plugin');
class plg extends JPlugin
{
/**
* Constructor
*
* For php4 compatibility 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( &$subject, $config )
{
parent::__construct( $subject, $config );
}
/**
* Plugin method with the same name as the event will be called automatically.
*/
function ()
{
$app = &JFactory::getApplication();
// Plugin code goes here.
// You can access parameters via $this->params.
return true;
}
}
?>
使用插件
插件使用起来非常简单,重要的是更好的设计,因为某种程度上来说,你在提供其他人使用的接口。你可以使用下面的代码来激活插件。$result = $mainframe->triggerEvent( 'onSomething', $param );这一行的程序会调用所有注册为‘onSomething’事件处理函数的插件,并传递一个$param 参数。triggerEvent 返回一个 results 数组,参数和返回结果都是可选,可以根据实际情况使用。现在,你可以试着开发一个插件了,如果你已经开发了一个插件,那如何进行调用呢?如果你不想把插件注册到Joomla中一系列的内置事件中,下面的操作可以忽略。如果你想触发这个创建,可以这么做:
$dispatcher =& JDispatcher::getInstance();
$results = $dispatcher->trigger( '<EventName>', <ParameterArray> );
值得注意的是事件参数必须写在一个数组中,插件函数本身会逐个读取这些参数。返回值是一个由所有与此事件关联的插件的返回值组成的数组(因此可能是一个多维数组)。
如果你是创建一个非核心事件的插件,记得安装好后要激活插件。

Need a translation service?

Please enter your personal details and we will contact you shortly

Words translated by CCJK

146,096,379

We are Certified

Our Client Satisfaction

rating for previous quarte

4.00

Over 95% of our clients recommend our language services to others

Copyright © CCJK Technologies Co., Ltd. 2000-2017. All rights reserved.
TOP