Joomla 默认将其系统消息(错误、通知等)呈现在
libraries/joomla/document/html/renderer/message.php
.
对于我自己的模板,我想自定义这些消息的显示方式。但是,使用模板覆盖似乎无法以传统方式进行。
这里有人知道完成这样的事情的方法吗?
对于 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默认模板。
模板覆盖仅适用于 MVC - 即视图和模块 chrome。
在不破解核心的情况下,您所能做的就是控制模板中的标签周围包含哪些 HTML 标签,以及为消息块<jdoc:include type="message" />
的元素定义的 CSS 。
将覆盖包含在模板目录中的一种更优雅的方法是将文件包含在系统插件中:
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;
}
http://extensions.joomla.org/extensions/style-a-design/popups-a-iframes/26551
或者
http://extensions.panchsoft.com/product/1-popup-system-messages.html
将此扩展用于 Joomla 的默认消息。