ch02插件的基本组成部分——Joomla插件开发

开始

编写一个内容插件,名字叫 Chapter 02 Test 01(插件文件名ch02test01)。先不考虑功能,先把框架安装上。不是创建安装包然后安装,这次直接在Joomla中创建文件,然后通过Discove来安装。
首先创建目录:plugins/content/ch02test01
添加两个文件:ch02test01.phpch02test01.xml

命名规则

插件名:ch02test01,包名:plg_content_ch02test01,类名:plgContentCh02test01
类名有严格的定义:Plg开头,跟着插件类型名,然后是插件名。

插件类和方法

创建一个插件就声明一个类。这个类在事件触发是,被实例化为对象。比如,你创建了一个内容插件,当系统事件触发时,什么都不会发生,当内容事件触发时,类实例化为对象,Joomla检查这个对象事件方法存不存在。细节都在JPluginJPluginHelperJEventDispatcher三个类里。使用观察者模式。

类继承自JPlugin。理论上,可以跳过JPlugin,直接继承JEvent,因为JEvent实际保存需要的功能。但是JPlugin包含很多有用的工具,比如初始化插件参数。

因为父类JPlugin不一定包含在Joomla核心中,所以需要通过jimport函数先自动加载这个类。有时候可以跳过这个步骤,比如内容插件,显然是在系统插件调用后才调用,所以JPlugin已经包含了。

添加时间方法到类

当一个事件被Joomla抛出后,事件首先指定插件组和事件方法。如果事件方法存在于类中,就会被自动调用。根据不同的方法,需要额外的方法参数。当一个个研究Joomla核心的事件时,就会更明白了。比如,可以添加事件方法用再在显示内容时添加部分内容。

oncontentbeforedisplay的参数
四个:

  • 一个数组,$context,包含内容类型的meta data,比如com_content.article
  • 对象 , $row,指向实际要显示的内容
  • 用过的参数,比如,文章参数
  • 目前显示的 $page。
    $row指向原始内容,意味着我们可以修改这个参数来直接修改内容。不但可以修改文章内容,还可以修改文章标题、作者以及其他属性。如果只是想修改文章内容,最好使用onContentPrepare这个时间方法。

找到插件参数
注意每个事件方法都有不同的参数和返回值。所以需要查出这些方法和返回值。怎么办,一是参考Joomla的文档docs.joomla.org,二是这本书,三是看Joomla的代码。最后一种方法最好。读源代码,找到事件在哪调用的,能够更好的理解插件的工作机制。

演示代码

添加些示例代码吧,

	public function onContentBeforeDisplay($context, &$row, &$params, $page = 0)
	{
		$row->title = $row->title . ' [test01]';
		$row->text = $row->text . '<p>[test01]</p>';
	}

保留变量和方法

以下变量和方法已经在JPlugin中定义过了,不要重复定义
变量

  • $params,插件的参数
  • $_name,插件的名称(ch01test01)
  • $_type,插件的类型(content)
  • $_subject,事件对象的名称
  • $_errors,错误

方法

  • loadLanguage()
  • update()
  • def()
  • get()
  • getProperties()
  • getError()
  • getErrors()
  • set()
  • setProperties()
  • setError()

XML配置文件

下一章会详细的讨论如何写XML配置文件。现在只做一个最基本的。文件名是ch02test01.xml。这样做通过Discover按钮就可以安装插件了。代码如下

<extension type="plugin" group="content">
	<name>plg_content_ch02test01</name>
</extension>

空index.html文件

用来防止浏览目录的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值