Bagaimana cara saya mengirimkan variabel dari modul khusus ke file templatnya?
8
Saya perlu tahu metode paling sederhana untuk mengirimkan variabel dari modul khusus ke file templatnya. Saya telah membuat custom.module dan menempatkan custom.tpl.php di folder modul.
Secara independen dari versi Drupal yang Anda tulis modulnya, ada dua kesalahan dalam kode Anda:
Anda mendefinisikan "Bluemarine" sebagai fungsi tema, tetapi kemudian Anda memanggil theme('custom'), yang akan memanggil fungsi tema "custom"
Jika Anda mendefinisikan "custom" sebagai fungsi tema yang menggunakan file template, maka theme_custom()tidak pernah dipanggil
Jika Anda menulis kode untuk Drupal 6, maka kode tersebut harus sama dengan yang berikut. Saya mengambil asumsi nama untuk fungsi tema tersebut custom.
function custom_menu(){
$items = array();
$items['custom']= array('title'=> t('custom!'),'page callback'=>'custom_page','access arguments'=> array('access content'),'type'=> MENU_CALLBACK,);return $items;}function custom_theme(){return array('custom'=> array('arguments'=> array('output'=> NULL),'template'=>'custom',),);}function custom_page(){
$output ='This is a custom module';return theme('custom', $output);}function theme_custom($output){}
File template akan memiliki akses ke $output, dan ke variabel apa pun yang ditetapkan template_preprocess_custom(), jika modul Anda mengimplementasikannya.
Misalnya, Anda bisa menerapkan kode yang mirip dengan yang berikut:
function template_preprocess_custom(&$variables){if($variables['output']=='This is a custom module'){
$variables['append']=' and I wrote it myself.";
}
}
Dengan kode ini, file templat memiliki akses ke $outputdan $append.
Sebagai contoh fungsi tema yang menggunakan file template, Anda dapat melihat theme_node () , yang didefinisikan dalam node_theme () , dan yang menggunakan node.tpl.php sebagai file template; fungsi preprocess yang diterapkan oleh modul Node untuk fungsi tema tersebut adalah template_preprocess_node () .
Terima kasih Kiam, jelas melewatkan komentar pertama OP tentang menggunakan D6. +1
Laxman13
Terima kasih Kiam, template_preprocess_custom (& $ variabel) melakukan trik
Kamran Akhter
Sekarang saya ingin memindahkan tpl ke folder tema, bagaimana saya bisa melakukannya?
Kamran Akhter
@ KamranAkhter Itu pertanyaan yang berbeda. :-)
kiamlaluno
3
Anda memanggil fungsi tema yang salah. Alih-alih function theme_customseharusnya function theme_Bluemarine. Anda juga perlu mengirimkan array ke variabel variabel hook_theme () . Lihat contoh sederhana di sini .
Menggunakan contoh Anda (setelah mengubah templat dan fungsi tema custom):
Terima kasih atas balasan, contoh yang Anda berikan adalah modul simpul dan saya punya modul non simpul. Saya hanya perlu cara untuk mengirimkan variabel ke file tpl, saya menggunakan bantuan drupal 6.plz
Kamran Akhter
Terima kasih atas balasan, ini memberi saya kesalahan. Tidak ada file atau direktori seperti itu sebenarnya mengharapkan file custom.tpl.php di folder modul yang sudah saya miliki sehingga dalam kode bluemarine akan diganti oleh kustom. Bluemarine adalah tema drupal yang saya gunakan.
Kamran Akhter
mengubah kode di atas dan memberi saya layar putih kosong apa yang harus saya lakukan tolong bantu
Kamran Akhter
Saya mengubah kode, dan saya membuatnya bekerja di situs saya.
Laxman13
Saya hanya menyalin tempel kode di atas tetapi tidak berfungsi
:-)
Anda memanggil fungsi tema yang salah. Alih-alih
function theme_custom
seharusnyafunction theme_Bluemarine
. Anda juga perlu mengirimkan array ke variabel variabel hook_theme () . Lihat contoh sederhana di sini .Menggunakan contoh Anda (setelah mengubah templat dan fungsi tema
custom
):Sekarang di custom.tpl.php hanya perlu
<?php print $output; ?>
sumber