В Drupal 7 по умолчанию $messages
переменная печатается в page.tpl.php.
Есть ли способ печати $messages
в файле node.tpl.php (например, $ node-mycontenttype.tpl.php).
Просто ставлю <?php print $messages; ?>
или
<?php print render($page['messages']); ?>
не работает.
Там в учебнике здесь для печати $ сообщений в блоке, но я хотел бы, чтобы поместить его в своем файле node.tpl.php.
template_preprocess_node
поэтому drupal_get_messages пуст, когда вы вызываете его.Ответы:
На самом деле, то, что вы хотите сделать, это:
Как это работает: ядро Drupal проверяет значение show_messages в theme_process_page. Если это TRUE (по умолчанию), тогда он вызывает theme ('status_messages'), как указано выше, и эффективно очищает хранилище сообщений, поэтому последующий вызов той же функции theme просто вернет пустую строку. Однако, если мы установим для этой переменной значение FALSE, это предотвратит вызов указанной функции темы на странице process_page, что позволит нам получать все сообщения с использованием одной и той же функции темы в выбранном нами шаблоне.
источник
Ответ в разделе Как отображать сообщения из блока отдельно от $ messages в page.tpl.php, на который вы ссылались в своем вопросе, является хорошим способом. По сути, вам нужно что-то вроде этого, где YOURTHEME - это название вашей темы, и эта функция должна быть в вашем template.php. Я на самом деле не запускал этот код, но у меня есть трещина в нем.
После этого вы сможете выводить $ messages в вашем node.tpl.php
источник