Joomla默认在
中呈现其系统消息(错误,通知等) libraries/joomla/document/html/renderer/message.php
。
对于我自己的模板,我想自定义这些消息的显示方式。但是,使用模板覆盖,传统方式似乎无法实现。
有人在这里知道如何完成这样的事情吗?
答案 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)