【发布时间】:2012-05-18 09:26:12
【问题描述】:
Joomla 默认在
中呈现其系统消息(错误、通知等)libraries/joomla/document/html/renderer/message.php.
对于我自己的模板,我想自定义这些消息的显示方式。但是,使用模板覆盖似乎无法以传统方式实现。
这里有人知道完成这样的事情的方法吗?
【问题讨论】:
标签: joomla joomla2.5 joomla3.1
Joomla 默认在
中呈现其系统消息(错误、通知等)libraries/joomla/document/html/renderer/message.php.
对于我自己的模板,我想自定义这些消息的显示方式。但是,使用模板覆盖似乎无法以传统方式实现。
这里有人知道完成这样的事情的方法吗?
【问题讨论】:
标签: joomla joomla2.5 joomla3.1
模板覆盖仅适用于 the MVC - i.e. views and module chrome。
在不破解核心的情况下,您所能做的就是控制模板中的 <jdoc:include type="message" /> 标记周围的 HTML 标记以及为 message 块的元素定义的 CSS。
【讨论】:
为 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 默认模板,例如。
【讨论】:
在模板目录中包含覆盖的更优雅的方法是将文件包含在系统插件中:
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;
}
【讨论】:
【讨论】: