2011-09-28 16 views
5

मैं ड्रूपल 7 पर हूं और मेरे पास सामग्री फ़ील्ड_मेज के लिए aspecific tpl.php फ़ाइल है: "फ़ील्ड - field_image.tpl.php"। मुझे इस क्षेत्र के लिए और मेरी थीम के लिए प्रीप्रोसेस फ़ंक्शन बनाना होगा।मैं अपने विषय प्रीप्रोसेस फ़ंक्शन को किसी विशिष्ट फ़ील्ड के लिए कैसे कॉल करूं?

मेरे विषय नाम मान लें कि "मेरा थीम"

ऐसा लगता है कि

function my_theme_preprocess_field(&$variables, $hook) { 
    $variables['classes_array'][] = 'aClassName'; 
} 

दिखना चाहिए, लेकिन यह काम नहीं करता है। मैं गलत हूँ। पर कहा?

धन्यवाद

उत्तर

13

आप उपयोग कर सकते हैं template_preprocess_field() (जैसे आप ऊपर अपने कोड में करते हैं) लेकिन सिर्फ विशेष क्षेत्र का परीक्षण आप के लिए सही एक है:

function my_theme_preprocess_field(&$variables, $hook) { 
    $element = $variables['element']; 
    if (isset($element['#field_name'])) { 
    if ($element['#field_name'] == 'field_image') { 
     $variables['classes_array'][] = 'aClassName'; 
    } 
    } 
} 

एक बार जब आप हुक डॉन को क्रियान्वित किया है अपने कैश को साफ़ करना न भूलें, हुक कार्यान्वयन ड्रूपल 7 में कैश किए जाते हैं, इसलिए कैश साफ़ होने तक इसे तब तक नहीं उठाया जाएगा।

+1

धन्यवाद। सभी कैश साफ़ करने के बाद मुझे कोई भी परिवर्तन नहीं दिख रहा है जहां वहां होना चाहिए। मुझे field_image में कोई 'aClassName' वर्ग नहीं मिल रहा है ... समस्या sibest

+0

'drupal_set_message (' test ') पर कॉल करें;' फ़ंक्शन के शीर्ष पर और पृष्ठ को दो बार रीफ्रेश करें - यदि आपको 'टेस्ट' संदेश नहीं दिखाई देता है तो हुक नहीं कहा जा रहा है। यदि ऐसा है तो सबसे अच्छा आप थीम को अक्षम कर सकते हैं और इसे फिर से सक्षम कर सकते हैं यह देखने के लिए कि क्या ड्रूपल हुक उठाता है या नहीं। ब्याज से क्या आपके पास अपनी 'template.php' फ़ाइल में इस के साथ कोई अन्य प्रीप्रोसेस/हुक फ़ंक्शन है? – Clive

+0

अंत में! विषय को अक्षम करने और पुनः सक्षम करने के बाद मुझे हुक को बुलाया गया। धन्यवाद! और बीटीडब्ल्यू हाँ, मुझे बहुत से प्रीप्रोसेस फ्यूक्शन मिल गए हैं! – sibest

-3

ड्रूपल 7 में आप फ़ील्ड के "#markup" मान को बदलकर template_preprocess_node() में फ़ील्ड के आउटपुट को फिर से लिख सकते हैं।

इसके अलावा, आप regexp उपयोग कर सकते हैं जो कुछ भी आप चाहते हैं बदलने के लिए पृष्ठ की सामग्री :) में

4

आप जहाँ आप अपने क्षेत्र की जाँच करें और अपने लेबल या मार्कअप पर कार्य कर सकते हैं अपने विषय के template.php में एक mytheme_preprocess_field(&$variables, $hook) घोषित कर सकता है, जोड़ने कक्षाएं, कुछ भी। तो आपको फील्ड विशिष्ट टीपीएल की आवश्यकता नहीं होगी। - उदाहरण के लिए।

function mytheme_preprocess_field(&$variables, $hook) { 
    if ($variables['element']['#field_name'] == 'field_machine_name') { 
     $variables['items'][0]['#markup'] = 'add custom markup'; 
    } 
} 

उम्मीद है कि यह किसी की सहायता करेगा।

+1

क्लाइव के उत्तर पर यह कैसे सुधारता है, आपके सामने पोस्ट किया गया है, अधिक जानकारी के साथ? –

संबंधित मुद्दे

 संबंधित मुद्दे