我可以使用joomla的onAfterRender作为模块而不是插件吗?

时间:2011-12-21 21:42:30

标签: joomla module joomla1.7

我想在加载任何页面时向Joomla插入一些代码。

为此,我创建了一个插入代码的模块。

我正在尝试使用

<?php 
// $Id: helper.php

defined('_JEXEC') or die;
jimport( 'joomla.plugin.plugin' );
jimport( 'joomla.environment.response' );

class modInsertCode
{

    function onAfterRender($params)
    {
            $code = 'some code'; 

            $documentbody = JResponse::getBody();
            $documentbody = str_replace ("</body>", $code." </body>", $documentbody);
            JResponse::setBody($documentbody);

            return true;

    }

}
?>

但是JResponse :: getBody();返回一个空字符串。任何想法,修复此代码的解决方案?

谢谢,

2 个答案:

答案 0 :(得分:1)

您必须使用插件执行此操作,您将无法使用模块执行此操作,因为在模块代码执行时尚未生成HTML响应。

我希望它有所帮助!

答案 1 :(得分:0)

我知道这有点旧,但为了将来参考,可以使用jQuery完成:

$doc = JFactory::getDocument();
$js = 'jQuery(document).ready( function() { 
           jQuery("#module'.$module->id.'").appendTo(document.body);
       })';
$doc->addScriptDeclaration($js);

这假设您已将模块中的内容包装在以下内容中,包括模块ID以支持模块的多个实例。

<div id="module<?php echo $module->id; ?>"> Your content </div>