2012-11-20 12 views
5

मैं एक कस्टम मेनू में किसी निश्चित मेनू लिंक में एक स्पैन टैग जोड़ने का तरीका जानने का प्रयास कर रहा हूं। मुझे केवल कस्टम मेनू लिंक के भीतर एक लिंक पर इसकी आवश्यकता है। प्रीप्रोसेस फ़ंक्शन का अनुमान लगाकर theme_menu_item_link() को कोई भाग्य नहीं मिला, ऐसा नहीं लगता कि इसे बिल्कुल भी बुलाया जा रहा था।ड्रूपल 7 में एक निश्चित कस्टम मेनू लिंक में एक स्पैन टैग कैसे जोड़ें?

उत्तर

1

उत्तर मिला! theme_menu_link() उपयोग करने के लिए आवश्यक:

function theme_menu_link(array $variables) { 
    $element = $variables['element']; 
    $sub_menu = ''; 

    if ($element['#below']) { 
     $sub_menu = drupal_render($element['#below']); 
    } 

    $output = l($element['#title'], $element['#href'], $element['#localized_options']); 
    return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n"; 
} 

http://api.drupal.org/api/drupal/includes%21menu.inc/function/theme_menu_link/7

वहाँ मैं आइटम मैं तलाश कर रहा हूँ और इसे समायोजित कर सकते हैं।

6

नीचे समाधान खोजें।

ध्यान दें कि यदि आप Superfish मॉड्यूल का उपयोग कर रहे हैं, तो theme_menu_link() इस मामले में काम नहीं करेगा, इसलिए theme_superfish_menu_item_link का उपयोग करें।

ड्रुपल 7

/* 
* Implements theme_menu_link(). 
*/ 
function THEME_menu_link(array $variables) { 
    $element = $variables['element']; 
    $sub_menu = ''; 

    if ($element['#below']) { 
    $sub_menu = drupal_render($element['#below']); 
    } 

    $element['#localized_options']['html'] = TRUE; 
    $linktext = '<span class="tab-inner">' . $element['#title'] . '</span>'; 

    $output = l($linktext, $element['#href'], $element['#localized_options']); 
    return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n"; 
} 

Drupal 7, (Superfish साथ)

/* 
* Implements theme_superfish_menu_item_link(). 
* Theme a superfish menu item link, 
* to override menu item to insert span tags 
*/ 
function THEME_superfish_menu_item_link(array $variables) { 
    $menu_item = $variables['menu_item']; 
    $link_options = $variables['link_options'] + array('html' => TRUE); 
    $linktext = '<span class="tab-inner">' . $menu_item['link']['title'] . '</span>'; 
    return l($linktext, $menu_item['link']['link_path'], $link_options); 
} 

हुक ऊपर परिभाषित करने के बाद अपने कैश स्पष्ट विषय रजिस्ट्री के पुनर्निर्माण के लिए।

यदि उपरोक्त काम नहीं करेगा, के रूप में @weaveoftheride ने सुझाव दिया, उपयोग सक्षम करने के लिए हाइपरलिंक और सेटिंग का उपयोग में मेनू मदों के लिए एक विषय समारोह के लिए एक थीम समारोह सुनिश्चित करें। आम तौर पर इन्हें डिफ़ॉल्ट रूप से सक्षम किया जाना चाहिए।

Drupal 6 (सिर्फ संदर्भ के लिए)

/* 
* Implements theme_menu_item_link(). 
*/ 
function THEME_menu_item_link($link) { 
    if (empty($link['localized_options'])) { 
    $link['localized_options'] = array(); 
    } 
    $link['localized_options'] += array('html'=>true); 
    return l('<span>'.$link['title'].'</span>', $link['href'], $link['localized_options']); 
} 

नोट: सब से ऊपर कोड में अपने विषय की अपनी मशीन नाम के साथ THEME को बदलने के लिए मत भूलना।

+0

यह मेरे लिए काम नहीं कर रहा है। यह हुक नहीं मिला है। यह मेरी template.php फ़ाइल में है। – weaveoftheride

+0

@weaveoftheride फ़ंक्शन नाम की जांच करें, उदा। रजिस्ट्री को पुनः लोड करने के लिए 'THEMENAME_menu_link' और अपने कैश साफ़ करें। – kenorb

+0

मैं सुपरफिश का उपयोग कर रहा हूं इसलिए मुझे थीम_superfish_menu_item_link का उपयोग करना चाहिए मुझे लगता है? इसके अलावा मेरा मेनू एक ब्लॉक में है। क्या इससे कोई फर्क पड़ता है? फ़ंक्शन nph_superfish_menu_item_link ($ चर) { डीपीएम ("ब्लाह"); $ menu_item = $ चर ['menu_item']; $ link_options = $ चर ['link_options']; रिटर्न एल ($ menu_item ['link'] ['title'], $ menu_item ['link'] ['href'], $ link_options); } – weaveoftheride

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