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 может отображать сообщения перед шаблонами узлов, поэтому вы не можете видеть эти сообщения.
Да, мне это тоже кажется неправильным, и здесь есть небольшая дискуссия и подтверждение по теме. (Закрыто: работа как задумано)