drupal_set_message() не работает в шаблоне node.tpl.php в Drupal 7

Моя проблема с<?php drupal_set_message('Hello World'); ?>

в node.tpl.php

В node.tpl.php я также сделал <?php print_r(get_defined_vars()); ?>чтобы узнать, правильно ли установлен шаблон темы. Ответ - да.

У меня также есть page_top и page_bottom в моем файле [theme].info 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

3 ответа

Решение

Переменная $messages не указана в документации по node.tpl.php для Drupal 7. У вас есть переменная $page_top, выводимая в ваш html.tpl.php? Я думаю, что это может быть, где сообщения получают вывод в D7.

Не уверен на 100%, но вы можете создать функцию preprocess_node и передать $messages в шаблоны узлов.

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

Drupal 7 может отображать сообщения перед шаблонами узлов, поэтому вы не можете видеть эти сообщения.

Да, мне это тоже кажется неправильным, и здесь есть небольшая дискуссия и подтверждение по теме. (Закрыто: работа как задумано)

Другие вопросы по тегам