เป็นไปได้ไหมที่จะกำหนดฟังก์ชั่น hook_preprocess ตามประเภทเอนทิตีเช่น profile2?


8

ฉันเดินผ่าน hooks ที่เป็นไปได้โดยใช้ฟังก์ชั่นhook_preprocess(&$vars, $hook)และมีเพียงเอนทิตีที่พร้อมใช้งาน เป็นไปได้ไหมที่จะทำสิ่งที่ชอบhook_preprocess_profile2_entity()หรือฉันต้องเขียนเงื่อนไขเพื่อตรวจสอบประเภทกิจการhook_preprocess_entity()?

คำตอบ:


15

สิ่งนี้ปรับรูปแบบชุดรูปแบบ Zen สำหรับฟังก์ชั่นการประมวลผลล่วงหน้าของโหนดกับเอนทิตี:

<?php

/**
 * Implements template_preprocess_entity().
 *
 * Runs a entity specific preprocess function, if it exists.
 */
function MYTHEME_preprocess_entity(&$variables, $hook) {
  $function = __FUNCTION__ . '_' . $variables['entity_type'];
  if (function_exists($function)) {
    $function($variables, $hook);
  }
}

/**
 * Profile2 specific implementation of template_preprocess_entity().
 */
function MYTHEME_preprocess_entity_profile2(&$variables, $hook) {
}

/**
 * Field Collection specific implementation of template_preprocess_entity().
 */
function MYTHEME_preprocess_entity_field_collection_item(&$variables, $hook) {
}

นี่มันเจ๋งมาก. ฉันลืมเสมอว่า PHP ให้คุณทำสิ่งนี้
mpdonadio

หากคุณต้องการที่จะทำในรูปแบบหลักและสืบทอด / แทนที่คุณจะต้องขุดลึกลงไปใน hook_theme hook_theme ของ Zen เป็นตัวอย่างที่ดี (แม้ว่าจะมีความยาว)
Capi Etheriel

ฉันจะขอบคุณถ้ามีคนแสดงให้ฉันเห็นว่าฉันสามารถบรรลุบางสิ่งที่คล้ายกันนอกเลเยอร์ของธีม! ขับรถฉันถั่ว ...
NikLP
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.