Saya melihat keduanya hook_preprocess_page()
dan hook_preprocess_html()
merupakan implementasi dari hook_preprocess_HOOK()
, tetapi saya tidak mengerti kapan harus menggunakan yang mana.
hook_preprocess_page
dipanggil pertama, tetapi itu tidak benar-benar membantu saya memahami siapa yang memanggilnya.
Melihat debug_print_backtrace()
output, itu dipanggil theme()
, tetapi itu tidak benar-benar membuat saya mendapatkan jawabannya.
Apakah itu hanya ditentukan oleh array yang diteruskan drupal_render()
?
template_preprocess_page()
berbeda darihook_preprocess_page()
, dan ada dokumentasi untuk hook_preprocess_HOOK , dengan cara yang sama ada untuk hook_process_HOOK .Jawaban:
hook_preprocess_page
adalah kait preprocess yang dipanggil ketika file template page.tpl.php digunakan, danhook_preprocess_html
hook preprocess dipanggil ketika file template html.tpl.php digunakan.Kedua kait praproses dipanggil saat laman dirender
theme('page')
, karena elemen laman yang ditentukan dari system_element_info () mendefinisikan html sebagai pembungkus tema.system_theme () lalu mendefinisikan html sebagai berikut.
Adapun kapan harus mengimplementasikan
hook_preprocess_html()
, Anda menerapkannya untuk mengubah variabel yang digunakan dalam file html.tpl.php, yang secara default memiliki konten berikut.Seperti yang Anda lihat, itu hanya berisi tag HTML yang membungkus konten halaman, tersedia di
$page
. Dengan itu, Anda dapat mengubah konten<head>
tag, judul halaman (yang masuk dalam<title>
tag pada<head>
tag), gaya CSS, dan file JavaScript yang ditambahkan ke halaman, kelas, dan atribut untuk<body>
tag.Dengan file template page.tpl.php, Anda dapat mengubah lebih banyak halaman yang diberikan, termasuk nama situs, slogan situs, judul halaman, dan feed yang terkait dengan halaman tersebut. Untuk sebagian besar dari mereka, ada fungsi Drupal khusus / hook yang harus Anda gunakan.
hook_preprocess_HOOK
adalah nama kait generik yang digunakan untuk semua kait preproses, dengan cara yang samahook_form_FORM_ID_alter()
adalah nama kait yang digunakan untuk kelas kait pengubahan.sumber
hook_preprocess_page
danhook_preprocess_html
adalah pengait lapisan tema yang dapat Anda gunakan untuk menambahkan variabel yang dapat digunakan di templat (page.tpl.php
&html.tpl.php
) Anda.hook_preprocess_hook
adalah pengait lapisan tema besar yang digunakan laman dan html, dan pengubahsuaian khusus yang Anda buathook_theme()
juga.Sebagai contoh, berikut adalah deklarasi dari
hook_theme()
:dan inilah fungsi preproses Anda:
tambahan
hook_preprocess()
memungkinkan Anda untuk menangkap beberapa kait tema, dan menambahkan variabel di dalamnya jugasumber