Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Plugins 我的插件应该属于哪个插件组_Plugins_Joomla - Fatal编程技术网

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

Plugins 我的插件应该属于哪个插件组,plugins,joomla,Plugins,Joomla,这是关于编写Joomla插件的一般性问题。创建插件时,必须将其分配给一个组,既可以是现有组,也可以是新的自定义组 据我所知,以下几点是正确的: 要使插件响应事件,必须在触发事件时加载插件组JPluginHelper::importPlugin('group_name') 事件属于组,但这实际上只是一个逻辑分组;即使未加载事件组,也可以触发事件 一个插件可以响应来自多个组的事件 如果以上所述是正确的,那么这是否意味着您将为您知道在触发您感兴趣的事件时将加载的组分配一个新插件 我将插件添加到新组

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

据我所知,以下几点是正确的:

  • 要使插件响应事件,必须在触发事件时加载插件组<代码>JPluginHelper::importPlugin('group_name')
  • 事件属于组,但这实际上只是一个逻辑分组;即使未加载事件组,也可以触发事件
  • 一个插件可以响应来自多个组的事件
如果以上所述是正确的,那么这是否意味着您将为您知道在触发您感兴趣的事件时将加载的组分配一个新插件


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

将插件添加到特定组的原因是一组事件,该组将侦听这些事件。例如,只有“用户”组侦听“onUserBeforeSave”和“ONUSERLOGINFAILURE”事件。所以,当向某个组添加插件时,您必须确保它支持您尝试处理的事件。简单明了。

将插件放入组的最大影响是,在某些情况下,整个组都会被加载,这是一种与监听触发器不同的行为。因此,如果你的插件想成为加载特定组时发生的事情的一部分,你应该把它放在该组中。否则,你把它放在哪一组并不重要,只是在某种程度上它可能会更整洁

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

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

另一种情况是内容插件,这是一种奇怪的特例。这些插件仅在内容扩展调用内容插件时运行。它们所做的一切,它们的全部目的,就是在内容中嵌入一些东西,这样你就不会希望它们一直运行

第三种情况是系统插件。这些插件将在每个页面加载上运行。你只会把一个插件在系统组,如果你需要它运行真的很早,每次。。。你不需要太多的插件,如果可能的话,你会避开系统组,因为即使插件性能有了所有的改进,性能仍然会受到影响。另外,当一个你只想在前端运行的插件在后端运行时,有时会有令人不快的惊喜

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


因此,这实际上是一个插件做什么的问题。

与其说是监听,不如说是显式加载组。通常,这是因为您将在特定组中循环,直到获得成功(如身份验证或缓存)。这就是为什么组内插件的顺序很重要。这个答案是完全错误的。如果您进行检查,您会发现用户组中的profile插件和系统组中的languagefilter插件监听onUserPreSave事件。即使在我的问题中,我也建议插件可以侦听来自不同组的事件。在“用户”模型或Joomla代码中的任何其他地方,都不会触发“系统”组的OnUserPreForesave事件,也不会使用它,无论它是否存在于任何“系统”组插件中。您可以向任何组中的任何插件添加任何事件,但这并不意味着该事件将被触发。所以是的,我的答案是绝对正确的。