我的插件应属于哪个插件组

时间:2014-08-28 17:53:41

标签: plugins joomla

这是关于编写Joomla插件的一般问题。创建插件时,必须将其分配给一个组,即现有组或新的自定义组。

据我所知,以下几点有:

  • 对于一个插件来响应一个事件,该事件被触发时必须加载插件的组。 JPluginHelper::importPlugin('group_name');
  • 事件属于组,但这只是一个逻辑分组;即使其组未加载,也可以触发事件。
  • 单个插件可以响应来自多个组的事件。

如果以上是正确的,那么这是否意味着你会为你知道在你感兴趣的事件被触发时加载的一个组分配一个新的插件?

我将插件添加到新组而不是将其添加到现有组中的原因是什么?

2 个答案:

答案 0 :(得分:0)

将插件放入组中的重大影响是,在某些点加载整个组,这是一种独立的行为,而不是监听触发器。因此,如果您的插件想要成为加载特定组时发生的事情的一部分,您应该将其放入该组中。否则你把它放在哪个组别并不重要,除了它可能在某种程度上更整洁。

你为什么想要成为自己的一组?因为您的组件(或其他扩展)将加载自己的组。这样做的原因是,其他人可能希望编写由组件触发的插件。许多更复杂的组件都是这样做的。

为什么群组有时会加载? 在某些情况下,您希望能够循环通过多种可能性,直到您获得成功(或失败)。因此,身份验证过程从第一个身份验证插件开始,然后循环访问它们,直到您成功登录或真正失败登录。这就是插件顺序重要的原因。

另一种情况是内容插件,这是一种奇怪的特殊情况。这些插件仅在内容扩展调用内容插件时运行。他们所做的一切,都是为了将​​内容嵌入到内容中,所以你不希望它们一直在运行。

第三种情况是系统插件。这些插件将在每个页面加载上运行。你只需要在系统组中插入一个插件,如果你需要它很早就开始运行......你不需要很多这些插件,如果可能的话,你会避免使用系统组,因为即使有了所有的改进对于插件性能,仍然有性能损失。另外,当你只为前端运行的插件在后端运行时,有时会出现令人不快的意外。

第四种情况是finder和搜索插件。在这些情况下,插件与特定组件中的非常特定的功能相关,插件组允许扩展开发人员创建自己的插件以同时运行。

所以这真的是你的插件的作用。

答案 1 :(得分:-1)

将插件添加到特定组的原因是一组事件,这些组正在侦听。例如,只有“user”组侦听“onUserBeforeSave”和“onUnserLoginFailure”事件。因此,在将插件添加到某个组时,您必须确保它支持您尝试使用的事件。简单明了。