2012-05-09 6 views
4

JoomlaのはどのようにJoomlaのシステムメッセージを無効にするために - デフォルトでmessage.phpテンプレート

libraries/joomla/document/html/renderer/message.phpでそのシステムメッセージ(エラー、通知など)をレンダリングします。

自分のテンプレートでは、これらのメッセージの表示方法をカスタマイズしたいと思います。しかし、テンプレートオーバーライドを使用する従来の方法では可能ではないようです。

ここで誰かがこのようなことを達成する方法を認識していますか?

答えて

0

テンプレートの上書きは、the MVC - i.e. views and module chromeでのみ動作します。

コアをハックすることなく、あなたが行うことができ、すべてのHTMLタグがテンプレートとメッセージブロックの要素のために定義されたCSSで<jdoc:include type="message" />タグの周りに包まれているかを制御します。

18

Joomla! 1.7から2.5あなたはtemplates/YOUR_TEMPLATE/html/message.php

にしてlibraries/joomla/document/html/renderer/message.phpをコピーする必要

(それは自動的に他の上書きのように含まれていないように)するとYOUR_TEMPLATEのindex.phpの中で、あなたがファイルをインクルードする必要があります。

// Message overwrite 
require_once JPATH_ROOT .'/templates/'. $this->template .'/html/message.php'; 

ここでは、JDocumentRendererMessage::render()関数を安全に上書きすることができます;

Joomla! 3.x

YOUR_TEMPLATEにhtml/message.phpファイルを作成するだけです。このファイルには、関数renderMessage()が含まれている必要があります。例としてisisのデフォルトテンプレートを確認してください。テンプレートディレクトリにオーバーライドを含むように

+0

それは魅力的に働いた。ありがとうございました...私はこれを探していました.. – amilaishere

+0

これは、コアをハッキングすることなく本当にうまく動作し、純粋にデフォルトを上書きします。 –

+2

J3.x: "{my_template}/html/layouts/joomla/system"に "message.php"を置き、$ displayData ['msgList']からメッセージを抽出してください。(Beez3 Templateをチェックしてください) –

0

よりエレガントな方法は、システムのプラグインファイルを含めることです。

public function onAfterInitialise() { 
    $app = JFactory::getApplication(); 
    if ($app->isSite()) { 
     $template = $app->getTemplate(); 
     if (!class_exists('JDocumentRendererMessage') && file_exists(JPATH_THEMES . '/' . $template . '/html/message.php')) { 
      require_once JPATH_THEMES . '/' . $template . '/html/message.php'; 
     } 
    } 
    return true; 
} 
+0

それはありません。テンプレートを上書きするだけであれば、必要な場所に適切なファイルを置いてください...既にMVCに含まれているものを行うためにプラグインをコーディングする必要はありません。 –

関連する問題