2011-08-23 14 views
6

मैं अपने ड्रूपल 7 साइट (थीम नाम "थॉम्पसन") पर मेनू में से किसी एक के लिए मेनू आइटम के बीच पाइप ("|") जोड़ना चाहता हूं। मुझे लगता है कि ऐसा करने का सबसे अच्छा तरीका है मेरी टेम्पलेट.एफपी फ़ाइल में एक फंक्शन बनाना है जिसे thompson_menu_link कहा जाता है। मैंने ऐसा किया और यह मेनू को सफलतापूर्वक संशोधित कर रहा है, लेकिन यह सभी मेनू बदल रहा है। क्या कोई तरीका है कि मैं अपनी साइट पर सिर्फ एक मेनू के लिए ऐसा कर सकता हूं?क्या मैं एक विशिष्ट मेनू के लिए theme_menu_link को संशोधित कर सकता हूं?

वर्तमान में, मैंने पाद लेख ब्लॉक में अपना पाद लेख मेनू (यूआरएल पथ: मेनू-पाद लेख-मेनू) जोड़ने के लिए व्यवस्थापक पृष्ठों का उपयोग किया। क्या मुझे इसे एक अलग तरीके से बुलाया जाना चाहिए?

+0

आपके द्वारा अपनाए गए समाधान के बारे में जो हिस्सा आपने जोड़ा है उसे जवाब के रूप में लिखा जाना चाहिए। यदि आपने इसे उत्तर के रूप में लिखा है, तो मैं इसे अप-वोट दूंगा। ':-)' – kiamlaluno

+0

क्षमा करें, नया यहाँ। यह नहीं पता था कि यह मेरे अपने प्रश्न का उत्तर देने और इसे स्वीकार करने के लिए बुरा फॉर्म था या नहीं। –

उत्तर

2

स्पष्ट रूप से ड्रूपल कोर theme menu links by menu name की क्षमता प्रदान करता है। मुख्य मेनू के लिए निम्नलिखित विषय समारोह

THEMENAME_menu_link__main_menu() 

वैकल्पिक रूप से आप मेनू ब्लॉक बनाने के लिए Menu Block मॉड्यूल इस्तेमाल कर सकते हैं काम करना चाहिए। अन्य चीजों के अलावा मॉड्यूल अतिरिक्त थीम सुझाव बनाता है। मॉड्यूल के रीडमे से:

मेनू ब्लॉक ड्रूपल कोर के मेनू थीम फ़ंक्शंस का उपयोग करता है। हालांकि, यह भी थीम हुक सुझाव प्रदान करता है जिसका उपयोग द्वारा किए गए थीम फ़ंक्शंस को ओवरराइड करने के लिए किया जा सकता है। ...

  • theme_menu_link() में से एक बनाने के द्वारा अधिरोहित जा सकता है:
    • [विषय] _menu_link __ [मेनू नाम]()
    • [विषय] _menu_link__menu_block()
    • [विषय] _menu_link__menu_block __ [मेनू नाम]()
    • [विषय] _menu_link__menu_block __ [ब्लॉक आईडी नंबर]()
+0

यह स्वीकार्य उत्तर होना चाहिए। प्रॉप्स @ डैनियल –

0

सबसे अच्छा तरीका है कि आप इसे निम्नलिखित मॉड्यूल स्थापित करने है बना सकते हैं:

http://drupal.org/project/menu_attributes

यह मॉड्यूल आपको कुछ मेनू प्रविष्टियों के लिए विशेष कक्षाएं जोड़ने के लिए, तो आप सिर्फ एक वर्ग rightpipe जोड़ने के लिए और सुविधा देता है परिभाषित उस वर्ग की तरह:

.rightpipe { border-right: 1px solid black } 

या

.rightpipe { background: url(1pixel_line_separator.png) no-repeat center right } 
2

मैंने thompson_menu_link() फ़ंक्शन थोड़ा सा गड़बड़ कर दिया है। मुझे यह पसंद नहीं है कि मैंने यह कैसे किया, लेकिन यह काम पूरा हो गया। असल में, यह मेनू नाम में पढ़ता है, और <li> तत्व को बाद में पाइप के साथ वापस करने के लिए एक सशर्त उपयोग करता है। यहां संपूर्ण ब्लॉक है:

function thompson_menu_link(array $variables) { 
    $element = $variables['element']; 
    $menuName = $variables['element']["#original_link"]["menu_name"]; 
    $sub_menu = ''; 

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

    $output = l($element['#title'], $element['#href'], $element['#localized_options']); 

    if ($menuName == "menu-footer-menu" && !in_array("last",$element['#attributes']['class']) { 
    $finalString = '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>|\n"; 
    } 
    else { 
    $finalString = '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n"; 
    } 

    return $finalString; 
} 
+1

यदि आपको अंत में ($ menuName == "मेनू-फ़ूटर-मेनू" &&! In_array ("अंतिम", $ तत्व ['# विशेषताएँ]] [' class ']) {{किसी अन्य की आवश्यकता है) में एक त्रुटि है। – canadiancreed

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

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