En realidad, lo que quieres hacer es esto:
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');
}
Cómo funciona esto: Drupal core verifica el valor de show_messages en theme_process_page. Si es VERDADERO (predeterminado), entonces llama al tema ('status_messages') como se indica arriba, y efectivamente vacía el almacenamiento de mensajes, por lo que llamar a la misma función de tema más tarde solo devolverá una cadena vacía. Sin embargo, si establecemos esa variable en FALSE, esto evita que dicha función de tema se invoque en process_page, lo que nos permite obtener todos los mensajes utilizando la misma función de tema, en una plantilla de nuestra elección.
template_preprocess_node
lo que drupal_get_messages está vacío cuando se llama a ella.