จริงๆแล้วสิ่งที่คุณต้องการทำคือ:
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 จึงว่างเปล่าเมื่อคุณเรียก