2011-03-04 9 views
17

मैं एक ड्रूपल 7 थीम में HTML आउटपुट को संशोधित करने का प्रयास कर रहा हूं जिसे मैं बना रहा हूं।Drupal 7: मेनू HTML आउटपुट संशोधित करना?

असल में < ली> के बजाय टेक्स्ट के साथ केवल सादा < ए> एस है, मैं < ए> के अंदर कुछ अतिरिक्त HTML शामिल करना चाहता हूं।

मुझे पता है कि ड्रूपल में मेनू द्वारा बनाए गए HTML को संशोधित करना संभव है। मैं पेज.tpl.php में निम्न कॉल देख सकता हूं:

<?php print theme('links__system_main_menu', array(
     'links' => $main_menu, 
     'attributes' => array(
     'id' => 'main-menu', 
     'class' => array('links', 'clearfix'), 
    ), 
     'heading' => array(
     'text' => t(''), 
     'level' => 'h2', 
     'class' => array('element-invisible'), 
    ), 
    )); ?> 

जो स्पष्ट रूप से थीम फ़ंक्शन को कॉल करता है, जो आउटपुट बनाता है। आउटपुट को संशोधित करने का एक तरीका Theme.inc में थीम_लिंक्स फ़ंक्शन को संशोधित करना होगा, है ना?

http://api.drupal.org/api/drupal/includes--theme.inc/function/theme_links

मुझे यह भी पता है कि तुम समारोह जो एचटीएमएल बनाता ओवरराइड करने के लिए template.php में एक हुक डाल सकते हैं। मैं वास्तविक ओवरराइड फ़ंक्शन बनाने का तरीका नहीं समझ सकता। क्या कोई मुझे सही दिशा में इंगित कर सकता है, कृपया?

उत्तर

18

आप क्या करना चाहते हैं आउटपुट को संशोधित करने के लिए एक हुक लागू करना है, सीधे "theme.inc" फ़ाइल को संशोधित नहीं करें।

उदाहरण के लिए

, इस पृष्ठ पर स्वीकार किए जाते हैं जवाब: Drupal Override Custom Menu Template


और (एक मॉड्यूल में या template.php में एक सामान्य नियम, जब आप कुछ के उत्पादन में संशोधित करना चाहते हैं, या तो implement a hook के रूप में सक्रिय विषय का) या template with a predefined file name का उपयोग करें जब ऐसा कोई मामला मौजूद हो (जब कोई टेम्पलेट पहले से मौजूद नहीं है, तो आप मॉड्यूल या थीम का उपयोग करके modify the list of template suggestions भी कर सकते हैं)।

+0

कूल, बिल्कुल मुझे जो चाहिए था। धन्यवाद! –

+3

स्वीकार्य उत्तर थीम_मेनू_इटम का उपयोग करता है जो ड्रूपल 6 है। ड्रूपल 7 में समतुल्य थीम_मेनू_इटम http://api.drupal.org/api/drupal/includes--menu.inc/function/theme_menu_link/7 – Rimian

+0

@Rimian Drupal 7 उपयोग theme_menu_item के बजाय theme_menu_link। –