【问题标题】:drupal_set_message() not working in node.tpl.php template on Drupal 7drupal_set_message() 在 Drupal 7 上的 node.tpl.php 模板中不起作用
【发布时间】:2011-05-26 13:39:50
【问题描述】:

我的问题是 <?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

中仍然不起作用

【问题讨论】:

    标签: php drupal drupal-7 drupal-theming drupal-templates


    【解决方案1】:

    $messages 变量未在node.tpl.php documentation for Drupal 7 中列出。您的html.tpl.php 中是否输出了 $page_top 变量?我认为这可能是消息在 D7 中输出的地方。

    【讨论】:

    • 附注- 您可能还想查看 Drupal Answers Beta 站点。使用它的人越多,它通过测试版的机会就越大:drupal.stackexchange.com
    • 嘿,马特,你是对的。 page.tpl.php 中缺少 $page_top 非常感谢!最重要的是,也感谢您的链接。 drupal.stackexchange.com 是我闲逛的理想场所。
    【解决方案2】:

    Drupal 7 可能会在节点模板之前渲染消息,这就是您看不到这些消息的原因。

    是的,我也觉得不妥,here is a little discussion 并确认了该主题。 (关闭:按设计工作)

    【讨论】:

      【解决方案3】:

      不是 100% 确定,但您也许可以创建一个 preprocess_node 函数并将 $messages 传递给节点模板。

      function template_preprocess_node(&$vars){
        $vars['messages'] = drupal_get_messages();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多