2010-08-24 16 views
7

क्या किसी प्रकार की कक्षा को 'तीर' या मेनू के अंदर एक अवधि जोड़ना संभव है जिसमें सबमेनस (वर्डप्रेस में) है? ऐसा लगता है कि आप यह जावास्क्रिप्ट का उपयोग कर सकते हैं, लेकिन मैं जानना चाहता हूं कि कोई PHP समाधान है ...PHP/वर्डप्रेस - अभिभावक मेनू में तीर जोड़ें

WP 3.0 में, मैंने देखा कि सक्रिय मेनू में "माता-पिता" या "पूर्वज" वर्ग हैं , लेकिन यह केवल सक्रिय मेनू के लिए है, और मुझे निष्क्रिय लोगों के लिए भी इसकी आवश्यकता है

+0

क्या आप 3.0 में मेनू-निर्माता का उपयोग कर रहे हैं? या आप नौसेना के लिए पेज या श्रेणियों का उपयोग कर रहे हैं? कृपया विस्तृत करें कि आप मेनू कैसे प्राप्त कर रहे हैं और अपने कामकाजी कोड के साथ चित्रित करें ताकि हम आपकी मदद कर सकें। – kevtrout

+0

मैं निर्मित कस्टम मेनू – Alex

उत्तर

12

यह कार्यक्षमता वास्तव में वर्डप्रेस कोर में होना चाहिए!
वैसे भी, मैंने आपके द्वारा अन्य उत्तरों पर एक टिप्पणी में भेजे गए मेनू टेम्पलेट स्रोत पर एक नज़र डाली है, और बच्चों के साथ मेनू आइटम पर कक्षा जोड़ने के लिए एक (बल्कि हैकी) तरीका मिला है। यह मूल रूप से डिफ़ॉल्ट व्यवहार करने के लिए डिफ़ॉल्ट वॉकर को उप-वर्गीकृत करता है। यदि आप इसे अपने विषय के functions.php में डालते हैं तो यह शायद सबसे अच्छा है। कोड यह रहा:

<?php 
class Arrow_Walker_Nav_Menu extends Walker_Nav_Menu { 
    function display_element($element, &$children_elements, $max_depth, $depth=0, $args, &$output) { 
     $id_field = $this->db_fields['id']; 
     if (!empty($children_elements[$element->$id_field])) { 
      $element->classes[] = 'arrow'; //enter any classname you like here! 
     } 
     Walker_Nav_Menu::display_element($element, $children_elements, $max_depth, $depth, $args, $output); 
    } 
} 
?> 

यह कॉल करने के लिए, आप walker तर्क जोड़ने के लिए जब आप अपने विषय में wp_nav_menu() फोन, इसलिए तरह की आवश्यकता होगी:

<?php 
wp_nav_menu(array('walker' => new Arrow_Walker_Nav_Menu, [other arguments...])) 
?> 

आशा है कि आप के लिए काम करता है! मैंने केवल इसे सतही रूप से परीक्षण किया है, लेकिन ऐसा लगता है कि यह काम करता है। मुझे बताएं कि क्या कोई किनारा मामला है जहां वर्ग जोड़ना विफल रहता है।

+0

पवित्र बकवास यह काम करता है! धन्यवाद: डी – Alex

+0

ऐसी स्थिति है जहां यह विफल रहता है: जब तर्क (fallback_cb) में निर्दिष्ट कॉलबैक फ़ंक्शन होता है, यानी। जब आपके पास कस्टम मेनू नहीं बनाया गया है, तो wp_nav_menu wp_page_menu() फ़ंक्शन से मेनू आइटम पुनर्प्राप्त करेगा, जो एक अलग वॉकर का उपयोग करता है मुझे लगता है कि – Alex

+0

हां - wp_page_menu द्वारा उपयोग किया जाने वाला वॉकर कक्षाओं को आसानी से जोड़ने की अनुमति नहीं देता है। मैं एक नज़र रखूंगा और देखूंगा कि क्या मैं अगले कुछ दिनों में कामकाज के बारे में सोच सकता हूं और अगर मुझे कुछ मिल जाए तो मेरा जवाब संपादित कर देगा। –

3

मुझे इसके लिए किसी भी देशी वर्डप्रेस समर्थन की जानकारी नहीं है, लेकिन आप इसे आसानी से कुछ jQuery का उपयोग करके कर सकते हैं।

<script type="text/javascript"> 
$("#menu-id ul li:has(ul)").addClass("parent"); 
</script> 
+0

में निर्मित का उपयोग कर रहा हूं, मुझे पता था। मैं सोच रहा था कि PHP के साथ ऐसा करने का कोई तरीका है या नहीं। जेएस विधि के साथ समस्या यह है कि पृष्ठ लोड के दौरान आपको एक छोटा "झिलमिलाहट" मिलता है, यदि मेनू आइटम में एक चर चौड़ाई – Alex

+0

है तो आप HTML को संशोधित करने का एक तरीका मांग रहे हैं जो WP उत्पन्न कर रहा है क्योंकि यह उत्पन्न करता है , फिर? उस टेम्पलेट के लिए कोई अंतर्निहित समर्थन नहीं है या आप अपने टेम्पलेट को कस्टमाइज़ कर सकते हैं? – Rup

+0

अच्छी तरह से आप पूरे मेनू आउटपुट (एक स्ट्रिंग) प्राप्त कर सकते हैं और इसे प्रतिबिंबित करने से पहले संशोधित कर सकते हैं, लेकिन मुझे नहीं पता कि मैं वहां क्या बदल सकता हूं ... मेनू टेम्पलेट यहां है: http: //core.trac .wordpress.org/ब्राउज़र/ट्रंक/wp-include/nav-menu-template.php – Alex

0

अगर यह उप मेनू

है और शैली

<style type="text/css"> 
     .main-navigation .parent > a, .main-navigation .parent > a:hover { 
      background-image: url("images/arrow.png"); 
      background-position: right center; 
      background-repeat: no-repeat; 
    } 

    </style> 
3

है तुम मुझे पसंद कर रहे हैं और जोड़ना चाहते हैं मुख्य मेनू में वर्ग माता पिता को जोड़ने के लिए सरल और विनम्र तरीका अपने मूल मेनू आइटम के लिए एक अवधि में एक HTML तीर, डोनाल्ड हार्वे के ग्राहक वॉकर वर्ग के अंदर इस तरह की एक पंक्ति जोड़ें:

$element->title .= '<span class="caret down-caret">&#x25BC;</span>'; 

आप WP व्यवस्थापक> मेनू पृष्ठ में सीधे मेनू लेबल में उस HTML को भी जोड़ सकते हैं लेकिन यह करने का यह एक शानदार तरीका नहीं है।

मैं http://cameronnokes.com/blog/adding-an-icon-to

0

यहां इस बारे में थोड़ा मैं नहीं जानता कि ब्लॉग सवाल क्या है, लेकिन हम इस तरह css द्वारा मेनू में तीर जोड़ सकते हैं:

.menu li > a:after { 
    color: #fff; 
    content: ' ▾'; 
} 

.menu li > a:only-child:after { 
    content: ''; 
} 
1

बस अपने सीएसएस करने के लिए इस पेस्ट कोड और यह अपेक्षित के रूप में काम करेगा।

.nav-menu li > a:after { 
    color: #888; 
    content: ' ▾'; 
} 

.nav-menu li > a:hover:after { 
    color: #444; 
    content: ' ▾'; 
} 

.nav-menu li > a:only-child:after { 
    content: ''; 
} 

Ps। अपने पृष्ठ को सेट करना न भूलें UTF-8

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