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

问题描述 投票:0回答:2

我想在加载任何页面时向 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();返回一个空字符串。修复此代码的任何想法、解决方案?

谢谢你,

php module joomla joomla1.7
2个回答
1
投票

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

希望对你有帮助!


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>
© www.soinside.com 2019 - 2024. All rights reserved.