क्या यह एक प्रकार से प्रोफाइल 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.