默认情况下,使用以下命令在模板的某个位置显示Joomla 3系统消息(消息,通知,警告)
<jdoc:include type="message" />
是否有可能获得对这些消息的更多控制并将它们显示在我自己组件的容器内的不同位置?
我尝试在组件的视图内使用上面的jdoc(便宜的镜头),但是没有运气。有什么方法可以使用Joomla的标准系统消息传递系统“捕获”由组件生成的消息,并在需要的任何地方显示它们?
提前致谢。
默认情况下,使用以下命令在模板的某个位置显示Joomla 3系统消息(消息,通知,警告)
<jdoc:include type="message" />
是否有可能获得对这些消息的更多控制并将它们显示在我自己组件的容器内的不同位置?
我尝试在组件的视图内使用上面的jdoc(便宜的镜头),但是没有运气。有什么方法可以使用Joomla的标准系统消息传递系统“捕获”由组件生成的消息,并在需要的任何地方显示它们?
提前致谢。
Answers:
好吧,似乎我要多挖一点才能找到我自己问题的答案。基本上我发现了这个插件:
http://extensions.joomla.org/extensions/style-a-design/popups-a-iframes/25240
这并不是我真正需要的,但是检查它的代码后,我找出了解决的方法,可以将其总结如下(以防万一有人来这里寻找相同的问题):
<jdoc:include type="message" />
,以使消息不会显示两次$app = JFactory::getApplication();
$messageQueue = $app->getMessageQueue();
这需要一些工作,但是我认为要遵循的总体路径是明确的。希望它对类似情况的其他人有用。
要完成Isidro的这个(好)答案,请注意,从今天开始(Joomla 3.8.12),getMessageQueue()
可以使用“ true”(getMessageQueue(true)
)作为参数来清除/清除消息队列的函数。
最后,要获得按预期方式存储的消息以供布局显示它们,请调用以下代码(从中提取MessageRenderer::getData()
):
// Initialise variables.
$lists = array();
// Get the message queue
$messages = \JFactory::getApplication()->getMessageQueue();
// Build the sorted message list
if (is_array($messages) && !empty($messages))
{
foreach ($messages as $msg)
{
if (isset($msg['type']) && isset($msg['message']))
{
$lists[$msg['type']][] = $msg['message'];
}
}
}
然后,您$lists
将以正确的方式进行排序。