Joomla事件没有被触发

时间:2013-02-10 10:45:13

标签: joomla

这是我的插件:

// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

// Import library dependencies
jimport('joomla.plugin.plugin');

class plgContentEya extends JPlugin
{

 function plgContentEya( &$subject, $config )
 {
    parent::__construct( $subject, $config );

 }
/**
 * Plugin method with the same name as the event will be called automatically.
 */
 function onAfterDisplayContent( &$article, &$params, $limitstart)
 {//Echo script there
echo "script works";
        // Plugin code goes here.
        // You can access parameters via $this->params.
    return "<script src='http://widget.eya.com/sprk.1.0.2.js' type='text/javascript'></script>";
 }
}




http://docs.joomla.org/Plugin/Events/Content

根据他们的文件

  Return Value
String. Returned value from this event will be displayed in a placeholder. Most templates display this placeholder after the article separator.

插件显示并且在我安装时不会抛出错误..但事件永远不会被触发。我没有在文件中看到它

<install version="2.5" type="plugin" group="content">
   <name>plg_content_eya</name>
   <author>eya</author>
   <creationDate>February 2013</creationDate>
   <copyright>(C) 2013 Open Source Matters. All rights reserved.</copyright>
   <license>GNU General Public License version 2 or later; see LICENSE.txt</license>
   <authorEmail>anattaligg@graeit.com</authorEmail>
   <authorUrl>www.eya.com</authorUrl>
   <version>2.5.0</version>
   <description>Adds eya plugin ot your site</description>
   <files>
     <filename plugin="eya">eya.php</filename>
   </files>

</install>

1 个答案:

答案 0 :(得分:2)

根据XML中的version="2.5",您的插件未被调用,因为您的事件名称错误。

自写入Plugin/Events/Content for Joomla! 1.5文档以来,事件名称已更改。我已将其标记为1.5文档,以便明确说明。

事件被重命名为更一致(域/期间/事件,例如内容/后/显示),因此,您想要的事件现在称为onContentAfterSave,您可以找到更多有关重命名事件的信息,请参阅文章“Adapting a Joomla 1.5 extension to Joomla 1.6

如果你想支持Joomla! 1.5你的插件也必须添加一个兼容层来捕获2.5调用并将其重定向到你的方法。 e.g。

// Catch 2.5
public function onContentAfterDisplay($article, $params, $limitstart)
{
    $result = $this->onAfterDisplayContent($article, $params, $limitstart);
    return $result;
}

N.B。未经测试的代码只需键入...