ฉันไม่เข้าใจอย่างสมบูรณ์เมื่อฉันควรใช้ hook_page_alter (& $ หน้า) หรือ template_preprocess_page (& $ vars, $ hook) ใน Drupal 7
อะไรคือแนวทางปฏิบัติที่ดีที่สุดเกี่ยวกับสิ่งนั้นที่จะใช้ใน template.php
ขอบคุณ
ฉันไม่เข้าใจอย่างสมบูรณ์เมื่อฉันควรใช้ hook_page_alter (& $ หน้า) หรือ template_preprocess_page (& $ vars, $ hook) ใน Drupal 7
อะไรคือแนวทางปฏิบัติที่ดีที่สุดเกี่ยวกับสิ่งนั้นที่จะใช้ใน template.php
ขอบคุณ
คำตอบ:
ความแตกต่างคือจุดประสงค์ของพวกเขา
hook_page_build ()และhook_page_alter ()ใช้เพื่อลบแก้ไขหรือเพิ่มองค์ประกอบที่ระดับหน้า
อาร์เรย์ $ page ส่งผ่านไปยังhook_page_alter()
มีองค์ประกอบระดับบนสุดสำหรับแต่ละภูมิภาคของบล็อก โดยค่าเริ่มต้นพวกเขาเป็นคนต่อไปนี้:
ตัวอย่างของการนำไปใช้อาจเป็นดังต่อไปนี้:
function mymodule_page_alter(&$page) {
// Add help text to the user login block.
$page['sidebar_first']['user_login']['help'] = array(
'#weight' => -10,
'#markup' => t('To post comments or add new content, you first have to log in.'),
);
}
ฟังก์ชัน preprocess ถูกเรียกเพื่อแก้ไขตัวแปรที่ส่งผ่านไปยังไฟล์เทมเพลต พวกเขาไม่สามารถเปลี่ยนโครงสร้างของหน้า แต่พวกเขาสามารถแก้ไขเนื้อหาขององค์ประกอบบางอย่างของหน้าเปลี่ยนเนื้อหาของตัวแปรเหล่านั้น
ตัวอย่างเช่นโมดูล Overlay จะลบแท็บหลักเมื่อหน้าเว็บที่กำลังแสดงข้อมูลเป็นภาพซ้อนทับ
function overlay_preprocess_page(&$variables) {
if (overlay_get_mode() == 'child') {
unset($variables['tabs']['#primary']);
}
}