组件和模块非常容易解释,能够直接输出内容。插件却是各色各样的。每个插件都有自己的用途。
插件被分成:插件组,或者叫做插件类型。按类型理解插件就较为容易了。
Joomla核心包括12个类型的50多个插件。
插件类型只是人为区分组织插件的。真正驱动插件的是事件。
事件是在Joomla代码中的一个位置,告诉插件,“嗨,在这个地方做点啥!”
比如,组件com_user
使用JForm
来打印用户信息。在表单生成之前,调用JDispatcher
来触发onContentPrepareForm
事件。插件监听这个事件,来修改$form
变量。代码如下:
JPluginHelper::importPlugin(′user ′);
$dispatcher = JDispatcher::getInstance();
$results = $dispatcher->trigger(
′onContentPrepareForm′, array($form, $data)
);
学习如何制作插件,归结为学习这些插件事件。
插件提供了一个方便的机制来修改现有的功能,而不用改变原始代码。不管是Joomla核心还是第三方扩展,都能使用这个方式。而且还可以定制自己的事件。
排序很重要。这决定了插件的执行顺序。序号越小的越先执行。新插件被安装后,默认序号值是0。注意,插件的顺序不一定总是有效。插件有顺序,但事件没顺序。一个插件可以用来对应2个事件。为第一个事件改了顺序,可能会影响第二个事件。
不要使用太多的插件。会减慢前端,弄乱后台。不用的插件就删除。或者不用使用在线网站来测试新扩展。
插件用来监听Joomla系统抛出的事件。