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