Dalam Drupal 7, secara default $messages
variabel dicetak di page.tpl.php.
Apakah ada cara untuk mencetak $messages
dalam file node.tpl.php (misal $ node-mycontenttype.tpl.php).
Hanya menempatkan <?php print $messages; ?>
atau
<?php print render($page['messages']); ?>
tidak berhasil.
Ada tutorial di sini untuk mencetak $ messages dalam satu blok, tetapi saya ingin meletakkannya di file node.tpl.php saya.
template_preprocess_node
jadi drupal_get_messages kosong ketika Anda menyebutnya.Jawaban:
Sebenarnya, yang ingin Anda lakukan adalah ini:
Cara kerjanya: Inti Drupal memeriksa nilai show_messages di theme_process_page. Jika itu BENAR (default) maka ia memanggil tema ('status_messages') seperti di atas, dan secara efektif mengosongkan penyimpanan pesan, jadi memanggil fungsi tema yang sama nanti hanya akan mengembalikan string kosong. Namun, jika kita menetapkan variabel itu ke FALSE, ini mencegah fungsi tema tersebut dipanggil dalam process_page, memungkinkan kita untuk mendapatkan semua pesan menggunakan fungsi tema yang sama, dalam templat pilihan kita.
sumber
Jawaban di Cara menampilkan pesan dari blok secara terpisah dari $ messages di page.tpl.php yang Anda rujuk dalam pertanyaan Anda adalah cara yang baik untuk melangkah. Pada dasarnya Anda membutuhkan sesuatu seperti ini di mana YOURTHEME adalah nama tema Anda dan fungsi ini harus ada di template.php Anda. Saya belum benar-benar menjalankan kode ini tetapi memiliki celah dalam hal itu.
Anda kemudian dapat menghasilkan $ messages di node.tpl.php Anda
sumber