я могу использовать onAfterRender от Joomla для модуля, а не для плагина? - PullRequest
0 голосов
/ 22 декабря 2011

Я хочу вставить какой-нибудь код в 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 ]

1 голос
/ 22 декабря 2011

Вы должны сделать это с помощью плагина, вы не сможете сделать это с помощью модуля, потому что ответ HTML не был сгенерирован к моменту выполнения кода модуля.

Iнадеюсь, это помогло!

0 голосов
/ 08 июля 2013

Я знаю, что это немного устарело, но для справки в будущем это можно сделать с помощью jQuery:

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

Это предполагает, что вы обернули содержимое в вашем модуле в нечто вроде следующего, включая идентификатор модуля для поддержки нескольких экземпляров модуля.

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