2011-12-21 6 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()しています。空の文字列を返します。任意のアイデア、このコードに対する修正の解決策? HTML応答がモジュールのコードが実行されます時間によって生成されていないので、

は、モジュールを使用してそれを行うことはできません、あなたがプラグインを使用してそれをしなければならない

答えて

1

、ありがとう。

私はそれが助けて欲しい!

+0

アルギモが正しいです。フレームワークが実行される順序を見ると、モジュールはHTMLがビルドされる前に実行され、プロセスのレンダリング後のステップには入りません。プラグインを使用するには、これをプラグインで実行する必要があります。 –

+0

ありがとう! – IberoMedia

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> 
関連する問題