क्या यह एक प्रकार से प्रोफाइल 2 जैसे इकाई प्रकार के आधार पर एक हुक_प्रोसेसर फ़ंक्शन को परिभाषित करना संभव है?


8

मैं फ़ंक्शन का उपयोग करके संभव हुक के माध्यम से चला गया hook_preprocess(&$vars, $hook)और केवल इकाई का उपयोग करने के लिए उपलब्ध था। क्या ऐसा करना संभव है hook_preprocess_profile2_entity(), या क्या मुझे इकाई प्रकार की जांच करने के लिए कोई शर्त लिखना है hook_preprocess_entity()?

जवाबों:


15

यह संस्थाओं के लिए नोड प्रीप्रोसेस फ़ंक्शंस के लिए ज़ेन थीम पैटर्न को लागू करता है:

<?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

यदि आप इसे एक मूल विषय और वंशानुक्रम / ओवरराइड में करना चाहते हैं, तो आपको हुक_टैम में गहरी खुदाई करनी होगी। ज़ेन का हुक_टैम एक अच्छा उदाहरण है (हालांकि लंबा है)।
Capi एथेरियल

मैं आभारी रहूँगा अगर किसी ने मुझे दिखाया कि मैं विषय परत के बाहर कुछ इसी तरह कैसे प्राप्त कर सकता हूं! मुझे पागल कर रहा है ...
निकोलप
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.