Joomla扩展插件开发文档(plugin)

概述

************************************************************************

Plugins(继承于JPlugin的一系列类)依附于全局事件分派系统的观察者类

无论是系统核心,还是第三方扩展都能触发一个或多个Plugins来执行一些功能

插件系统的实现是一个观察者模式。分为两部分,一部分是观察者(JPlugin),另一部分是被观察者(JEventDispatcher)

Plugins命名规范plg<type><name>

类型

************************************************************************

插件的目录为<root>/plugins

系统核心中提供了以下8种类型的插件

Authentication 插件允许你对不同的来源进行验证。当你登陆的时候可以通过Joomla的用户数据库进行验证。然而有很多其它的方式,也是可以的,例如:Google的 OpenID(开放式用户中心身份标识),LDAP(轻量目录访问协议)和很多其它的方式。无论哪种来源,有其开放API,你都可以写一个验证插件,以确认登陆的身份。例如你可以写一个Twitter账户的验证插件,因为他们提供了开放API。

Content 插件用于在显示文章内容时改变或增加一些内容。例如content插件可以隐藏文章种的email地址,或者用自己的方式格式化URL地址。 content插件也可以在文章种搜索特定的标记,然后将他们替换为其它的文本或者HTML。例如在名为Load Module插件中,将会启动所有在banner1位置的模块,并且把{loadmodule banner1}标记,替换成他们的输出内容。

Editor 插件允许你增加新的内容编辑器(常用的有WYSIYWG)

Editor-XTD(扩展)插件允许你editor上增加某些功能按钮。例如现有的默认editor下的几个按钮:Image(增加图片),Pagebreak(插入分页符)和Read more(阅读全文)按钮。

Search 插件允许你在不同的组件,不同的文章中进行搜索。比如文章系统的search插件:Contacts 、Weblinks

System 插件允许你在Joomla站点的各个地方使用PHP代码执行各种动作。

User 插件允许你在不同的时候执行针对于用户的动作。包括登录时、登出时,还有存储用户数据的时候。用户插件中最典型的在不同web应用之间进行桥连接(bridge)。例如建立一个Joomla与Phpbb之间的桥连接。

XML-RPC 插件允许你为网站提供一个XML-RPC服务。当你的网站为其它应用程序(或许是个桌面应用程序)提供网络服务(web services)的时候,它为你提供了远程交互的能力。网络服务真的是一个高深的话题,这里没办法讲的太详细。

每种类型的插件位于<root>/plugins目录下的子目录中

可以在<root>/plugins目录下创建子目录来添加自定义的插件类型

文件

************************************************************************

一个基本的plugin包括两个文件,一个以plugin名称命名的php文件和一个同名的xml配置文件

test.php

示例:

<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.plugin.plugin' );

/**
 * Example system plugin
 */
class plgSystemTest extends JPlugin
{
 /**
  * Constructor
  *
  * @param object $subject The object to observe
  * @param  array   $config  An array that holds the plugin configuration
  * @since 1.0
  */
 function plgSystemTest( &$subject, $config )
 {
	parent::__construct( $subject, $config );
 }

 /**
  * onAfterInitialise 系统事件表示在系统初始化之后触发此事件
  */
 function onAfterInitialise()
 {
	// 执行操作
 }
}

系统事件包括

************************************************************************

Authentication
	onAuthenticate
	Content
	onPrepareContent
	onAfterDisplayTitle
	onBeforeDisplayContent
	onBeforeContentSave (new in 1.5.4)
	onAfterContentSave (new in 1.5.4)
Editors
	onInit
	onGetContent
	onSetContent
	onSave
	onDisplay
	onGetInsertMethod
Editors XTD (Extended)
	onDisplay
	Seach
	onSearch
	onSearchAreas
System
	onAfterInitialise
	onAfterRoute
	onAfterDispatch
	onAfterRender
User
	onLoginUser
	onLoginFailure
	onLogoutUser
	onLogoutFailure
	onBeforeStoreUser
	onAfterStoreUser
	onBeforeDeleteUser
	onAfterDeleteUser
XML-RPC
	onGetWebServices

配置文件

************************************************************************

<?xml version="1.0" encoding="utf-8"?>
<install version="1.5.2" type="plugin" group="system" method="upgrade"><!--group:插件的类型-->
 <name>System - Test</name>
 <author>Author</author>
 <creationDate>Month 2008</creationDate>
 <copyright>Copyright (C) 2008 Holder. All rights reserved.</copyright>
 <authorEmail>email</authorEmail>
 <authorUrl>url</authorUrl>
 <version>1.0.1</version>
 <description>A test system plugin</description>
 <files>
  <filename plugin="example">test.php</filename>
 </files>
 <params>
    <param name="example"
    type="text"
    default=""
    label="Example"
    description="An example text parameter" />
 </params>
</install>

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值