Насправді, ви хочете зробити це:
function YOURTHEME_preprocess_page(&$variables) {
// This disables message-printing on ALL page displays
$variables['show_messages'] = FALSE;
}
function YOURTHEME_preprocess_node(&$variables) {
$variables['messages'] = theme('status_messages');
}
Як це працює: Drupal ядро перевіряє значення show_messages в theme_process_page. Якщо це TRUE (за замовчуванням), він викликає тему ('status_messages'), як зазначено вище, і ефективно спорожняє сховище повідомлень, тому виклик тієї ж функції теми пізніше поверне порожню рядок. Проте, якщо ми встановлюємо цю змінну в FALSE, це запобігає сказав тема функція від виклику в process_page, що дозволяє нам отримувати всі повідомлення, використовуючи ту ж саму функцію, тему, в шаблоні нашого вибору.
template_preprocess_node
тому drupal_get_messages порожня, коли ви її закликаєте.