我正在为一个插件开发一个插件,但不知何故我没有得到我引入的要在嵌套插件中执行的新事件。错误在哪里?
在我的简化(且无用)示例中,foo 是“主插件”,bar 是 foo 的插件。为了证明插件已执行,我只是将其名称附加到 introtext - 但这表明仅调用了 foos 事件处理程序,而未调用 bar 处理程序(但该类被构造)...
foo.php:
<?php
class plgContentFoo extends JPlugin
{
function onContentPrepare($context,$article,$params,$limitstart)
{
jimport('joomla.plugin.plugin');
JPluginHelper::importPlugin('content');
$dispatcher = JDispatcher::getInstance();
$dispatcher->trigger('executingOCP', array($article));
$article->introtext .= "<br>Executed foo.OCP";
return true;
}
function executingOCP($arg)
{
$arg->introtext .= "<br>*a*Added foo.xOCP";
$arg->text .= "<br>*b*Added foo.OCP";
$arg->fulltext .= "<br>*c*Added foo.OCP";
}
}
?>
bar.php:
<?php
class plgContentBar extends JPlugin
{
function __construct( &$subject , $config ) {
echo "executing bar-constructor!";
}
function executingOCP($arg)
{
$arg->introtext .= "<br>*1*Added bar.OCP";
$arg->text .= "<br>*2*Added bar.OCP";
$arg->fulltext .= "<br>*3*Added bar.OCP";
return true;
}
}
?>
bar.xml:
<?xml version="1.0" encoding="utf-8"?>
<extension type="plugin" version="1.6" method="upgrade" group="content">
<name>Content - bar - a foo-plugin!</name>
<creationDate>2013-05-30</creationDate>
<version>2.0.0.16</version>
<releaseDate>2013-05-30 12:00:58</releaseDate>
<releaseType>First public release!</releaseType>
<author>Michael Baas</author>
<authorEmail>mb@mbaas.de</authorEmail>
<authorUrl>mbaas.de</authorUrl>
<copyright>(c) 2013 Michael Baas</copyright>
<description>A plugin to handle foos events!</description>
<files>
<filename plugin="bar">bar.php</filename>
</files>
</extension>
最后是 foo.xml:
<?xml version="1.0" encoding="utf-8"?>
<extension type="plugin" version="1.6" method="upgrade" group="content">
<name>Content - foo</name>
<creationDate>2013-05-30</creationDate>
<version>2.0.0.16</version>
<releaseDate>2013-05-30 12:00:58</releaseDate>
<releaseType>First public release!</releaseType>
<author>Michael Baas</author>
<authorEmail>mb@mbaas.de</authorEmail>
<authorUrl>mbaas.de</authorUrl>
<copyright>(c) 2013 Michael Baas</copyright>
<description>foo is the "main " plugin...</description>
<files>
<filename plugin="foo">foo.php</filename>
</files>
</extension>
为了您的方便,还可以下载这些文件: http: //mbaas.de/foo.zip和http://mbaas.de/bar.zip
更新(2013 年 6 月 6 日):为了简化调试,我制作了 bar 一个简单的内容插件,但没有效果: foo.onContentPrepare 触发 foo.executingOCP,但从未调用 bar.executingOCP。还更新了拉链!我真的希望有人可以帮助解决这个问题,并且很乐意为我正在开发的野兽提供免费许可证,以换取解决这个问题:)