如何覆盖Joomla系统消息 - message.php模板

时间:2012-05-09 20:02:48

标签: joomla joomla2.5 joomla3.1

Joomla默认在

中呈现其系统消息(错误,通知等)

libraries/joomla/document/html/renderer/message.php

对于我自己的模板,我想自定义这些消息的显示方式。但是,使用模板覆盖,传统方式似乎无法实现。

有人在这里知道如何完成这样的事情吗?

4 个答案:

答案 0 :(得分:18)

对于Joomla! 1.7 - 2.5

您需要将libraries/joomla/document/html/renderer/message.php复制到templates/YOUR_TEMPLATE/html/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 默认模板。

答案 1 :(得分:0)

模板覆盖仅适用于the MVC - i.e. views and module chrome

在不破解核心的情况下,您可以做的就是控制HTML模板围绕模板中的<jdoc:include type="message" />标记以及为消息块的元素定义的CSS。

答案 2 :(得分: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;
}

答案 3 :(得分:0)