2011-12-21 92 views
0

我想在加载任何页面时向Joomla插入一些代码。我可以使用Joomla的onAfterRender模块而不是插件吗?

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

我想使用

<?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();返回一个空字符串。任何想法,解决此代码的解决方案?

谢谢

回答

1

你必须使用一个插件来做到这一点,你将不能够使用一个模块来进行,因为HTML响应尚未通过模块的代码被执行时产生。

我希望它有帮助!

+0

Alghimo是正确的。如果您查看框架执行的顺序,则在构建HTML之前完成模块,以便您不处于流程中的渲染步骤之后。如果你想让它工作,这必须用插件完成。 – 2011-12-24 05:44:02

+0

谢谢你们! – IberoMedia 2011-12-24 09:58:24

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> 
相关问题