drupal_set_message在Drupal 7的node.tpl.php模板中不起作用

问题描述

| 我的问题是
<?PHP drupal_set_message(\'Hello World\'); ?>
在node.tpl.PHP中 在node.tpl.PHP中,我也做了         
<?PHP print_r(get_defined_vars()); ?>
找出主题模板设置是否正确。答案是肯定的。 我的[theme] .info文件中还设置了page_top和page_bottom         
regions[content] = Content
        regions[help] = Help
        regions[page_top] = Page Top
        regions[page_bottom] = Page Bottom
$ messages输出在page.tpl.PHP中         
<div id=\"messages\">
          <?PHP  print $messages; ?>
        </div>
在检查完所有这些之后,drupal_set_message()在node.tpl.PHP中仍然不起作用     

解决方法

Drupal 7的node.tpl.php文档中未列出$ messages变量。在html.tpl.php中是否输出了$ page_top变量?我认为这可能是消息在D7中输出的地方。     ,Drupal 7可能会在节点模板之前渲染消息,这就是为什么您看不到这些消息的原因。 是的,我也觉得错了,这里有一些关于该主题的讨论和确认。 (关闭:按设计工作)     ,不确定100%,但是您可以创建preprocess_node函数并将$ messages传递给节点模板。
function template_preprocess_node(&$vars){
  $vars[\'messages\'] = drupal_get_messages();
}