मैं एक मानक मेनू आइटम के उप-मेनू के रूप में एक वर्गीकरण मेनू कैसे इंजेक्ट कर सकता हूं?


12

मेरे पास एक मुख्य मेनू है, जिसमें निम्न के समान एक शीर्ष-स्तरीय संरचना है:

Home - Categories - Something Else - ... - Contact

उन शीर्ष-स्तरीय लिंक में से प्रत्येक एक उपयुक्त नोड पेज पर जाता है।

मेरे पास श्रेणियाँ (बहु-स्तरीय) के लिए एक शब्दावली है, और मुझे "श्रेणियाँ" आइटम के तहत उप-मेनू में उन टैक्सोनॉमी शर्तों को प्राप्त करने की आवश्यकता है। मैं मुख्य मेनू में आइटम को हार्ड-कोडिंग से बचना चाहता हूं, क्योंकि उप-मेनू को शब्दावली के रूप में विकसित / सिकुड़ना चाहिए।

अतीत में मैंने इसे पूरा करने के लिए ओवर-अल्टरनेट कोड लिखा है, जो टैक्सोनॉमी ऑपरेशंस में हुक करता है और उस पर आधारित एक विशेष मेनू के उप-आइटम का प्रबंधन करता है (बहुत कुछ टैक्सोनॉमी मेनू के समान है, लेकिन प्रत्येक के लिए एक अलग मेनू होने के बिना। शब्दावली)।

जबकि वह विधि काम करती है, यह आदर्श नहीं है और निश्चित रूप से सामान्य नहीं है। मैं पुराने कोड से नए में बस उस कोड को नहीं उठा सकता, इसके लिए उचित मात्रा में अनुकूलन की आवश्यकता होगी।

मैं यह महसूस करने में मदद नहीं कर सकता कि इसके लिए 'मानक', मॉड्यूल-आधारित समाधान होना चाहिए।

मैंने संयोजन में विभिन्न मॉड्यूलों का एक समूह (यहां तक ​​कि कुछ दृश्य-आधारित मॉड्यूल का उपयोग करने का सुझाव देते हुए, अजीब तरह से पर्याप्त है) का उपयोग करने के लिए कुछ सुझाव देखे हैं। मैं किसी भी सुझाव के लिए खुला हूं, लेकिन अगर इसमें 1 या 2 से अधिक मॉड्यूल स्थापित करना और हार्ड-कोडित, संदर्भ-विशिष्ट कॉन्फ़िगरेशन का लोड शामिल है, तो शायद यह इस मामले में बहुत अधिक मदद नहीं करेगा।


1
मुझे लगता है कि मैंने इसे देख लिया है ... इसी तरह के विषय में मेनू में एक टैक्सोनॉमी-आधारित आइटम बनाने के लिए नियमों का उपयोग करने के बारे में विचार है, लेकिन यह आदर्श से बहुत दूर लगता है।
मोलॉट

अगर मुझे सही तरीके से समझ में आया, तो क्या आप इस मॉड्यूल drupal.org/project/taxonomy_treemenu की तरह दिख रहे हैं , यह अच्छा मेनू के साथ एकीकृत कर सकते हैं लेकिन D6 के लिए
Bal

क्या आपके पास वास्तविक मेनू आइटम हैं या क्या यह मेनू में टैक्सोनॉमी शर्तों के पेड़ को जोड़ने के लिए व्यवहार्य है जब इसे प्रदान किया जाता है?
रॉबी

धन्यवाद @Bala, एक D7 समाधान हालांकि जरूरत है
क्लाइव

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

जवाबों:


13

विकल्प ए) जब तक मैं गलत नहीं हूं, क्या आप इसे नहीं चुन सकते हैं जहां आपके करोनॉमी मेनू को पार्स किया जाएगा (मेनू स्थान) जब आप इसे चुनते हैं? एकमात्र समस्या मुझे लगता है कि आप इसके साथ मिल सकते हैं, मुझे लगता है कि यह हर बार मेनू को पुनर्निर्माण करने की आवश्यकता होती है, जब कर अद्यतन किया जाता है

विकल्प बी) मैंने अपनी साइट पर इसके समान कुछ किया है, मैंने मेनू व्यू मॉड्यूल का उपयोग किया , जिससे मुझे अपने प्राथमिक मेनू में दृश्य देखने की अनुमति मिली।

यदि आप एक नया दृश्य बनाते हैं, जो आपके सभी टैक्सोनॉमी शब्दों को एक ब्लॉक डिस्प्ले के रूप में सूचीबद्ध करता है, तो यदि आवश्यक हो तो दृश्य में कोई भी अतिरिक्त फ़िल्टरिंग / संशोधन लागू करें (यदि आप मेरे उदाहरण में नहीं चाहते थे)। फिर जब आप अपने मुख्य मेनू में एक नया लिंक जोड़ते हैं, तो आप लिंक के बजाय किसी दृश्य का उपयोग करना चुन सकते हैं। वहां से आप वह दृश्य चुनें जिसे आप उपयोग करना चाहते हैं, उसके माता-पिता के रूप में 'श्रेणी' मेनू आइटम चुनें और सहेजें (आपको बचाने के बाद फिर इसे मेनू में सक्षम करना होगा, जो मॉड्यूल के साथ एक बग प्रतीत होता है)

मैं यह गारंटी नहीं दे सकता कि यह आपके लिए सबसे अच्छा समाधान है, लेकिन यह तब काम किया जब मैंने इसका परीक्षण किया


1
हां, यह पता चलता है कि मैं बेवकूफ रहा हूं - टैक्सोनॉमी मेनू में यह सटीक कार्यक्षमता है जो आपके (आपके विकल्प ए) में बनाई गई है। मैं जिस विशेष मेनू के साथ काम कर रहा हूं वह बहुत छोटा है, और श्रेणियां अक्सर नहीं बदलेगी, इसलिए पुनर्निर्माण कोई समस्या नहीं है। मानसिक स्वास्थ्य की जांच के लिए बहुत-बहुत धन्यवाद
क्लाइव

3

Menupoly में कस्टम "मेनू ट्री स्रोतों" के लिए एक एपीआई है। मैं वास्तव में मेनू लिंक के अलावा कुछ के लिए इसका इस्तेमाल कभी नहीं किया है, इसलिए ऐसे मुद्दे हो सकते हैं जिन्हें हमें रास्ते में ठीक करना होगा। लेकिन बुनियादी वास्तुकला वहाँ है।

यदि आप इस मार्ग पर जाते हैं, तो आप करेंगे

  • "श्रेणियाँ" पृष्ठ से परे किसी भी वर्गीकरण शब्द के बिना अपने मौजूदा मुख्य मेनू का उपयोग करें।
  • उस से स्वतंत्र अपने वर्गीकरण पेड़ बनाएँ।
  • एक कस्टम "मेनू ट्री स्रोत" लिखें जो मेनू_लिंक्स से सामान्य के रूप में प्राप्त करता है, लेकिन जब इसे एक वर्गीकरण शब्द मिलता है, तो इसके बजाय यह वर्गीकरण से प्राप्त होता है।
    इसलिए, किसी तरह आपको यह पता लगाने में सक्षम होना चाहिए कि "श्रेणियाँ" लिंक कर-संबंधी है।
  • यदि मेन्यू लिंक टैक्सोनॉमी से संबंधित है और एक ही समय में एक नियमित सबमेनू है, तो आपको किसी तरह दोनों बच्चों को एक साथ मिलाने की जरूरत है।

यह मार्ग कुछ काम का होगा, लेकिन यह दूसरों के लिए उपयोगी हो सकता है, और यह संभवतः आपकी साइट-विशिष्ट तर्क की तुलना में अधिक सुरुचिपूर्ण और पुन: प्रयोज्य है।

वर्तमान में भी एक वर्गीकरण-केवल "मेनू ट्री स्रोत" मौजूद नहीं है, इसलिए शायद यह एक मिश्रित प्लगइन के साथ शुरू करने से पहले एक उचित पहला कदम होगा।


यह कहा जा रहा है, एंड्रयू मॉरिस द्वारा स्वीकार किए गए उत्तर पूरी तरह से काफी अच्छे हो सकते हैं। और इसका मतलब है मेरे लिए कम काम :) फिर भी इसे किसी ऐसे व्यक्ति के लिए पोस्ट करना चाहता था जो इसे उपयोगी पा सके।
दान

वी। दिलचस्प, धन्यवाद। स्वीकृत जवाब काम ठीक कर रहा है, लेकिन मुझे कोड समाधान भी प्राप्त करने में बहुत दिलचस्पी है। क्या मैं मान सकता हूं कि यह आपके मॉड्यूल में से एक है कि यह सब PSR-0 अच्छाई पर बनाया गया है? :)
क्लाइव

यह एक xautoload के PHP 5.2 संगतता मोड का उपयोग करता है, जो कुछ हद तक PEAR जैसा है लेकिन उथले निर्देशिकाओं के साथ है। इसलिए, PSR को मंजूरी नहीं दी गई। मैं किसी दिन PSR-0 पर जा सकता हूँ ..
बजे

हालांकि मुझे PSR-X में बहुत दिलचस्पी है (जो शायद D8 में कभी नहीं मिल सकता है, दुख की बात है)
दान

2

मेट्रो मेनुस आपकी आवश्यकता को पूरा करेगा और यहां तक ​​कि इसका निर्माण खाल में भी किया जा सकता है और अपना खुद का निर्माण कर सकता है जो अच्छे मेनू की तरह कार्य करता है। इस मॉड्यूल के साथ आप मेनू या टैक्सोनॉमी से किसी भी गहराई के साथ किसी भी उप आइटम का चयन कर सकते हैं और मैं इससे पहले इसका उपयोग नहीं कर रहा हूं।

टच स्क्रीन (iPad, iPhone और आदि) के साथ संगतता।

यहाँ छवि विवरण दर्ज करें


2

आप उसी के लिए ओम मैक्सी मेनू मॉड्यूल का उपयोग कर सकते हैं । यह एडमिन को आपके द्वारा अटैचमेंट, मॉड्यूल जैसे व्यू, स्लाइड शो, मेन्यू, यूजर, अच्छा मेन्यू, क्विकैब्स और टेबल, लिस्ट, इमेज, वीडियो आदि के साथ कस्टम ब्लॉक के साथ मेन्यू बनाने की अनुमति देगा।

आप टैक्सोनॉमी मेनू का उपयोग करके एक अलग मेनू बना सकते हैं और इस मेनू को सब मैक्सी मेनू द्वारा उत्पन्न मेनू के रूप में संलग्न कर सकते हैं।

धन्यवाद


2

मैंने हाल ही में एक उत्पाद श्रेणी के मेनू के लिए कुछ ऐसा ही किया है। यह केवल 1 स्तर के लिए गहरा था, लेकिन आगे के स्तर को दिखाने के लिए आसानी से संशोधित किया जा सकता था।

/**
 * Implements theme_menu_link().
 */
function THEME_menu_link__main_menu($variables) {

  $sub_menu = '';
  $element = $variables['element'];
  $menu_string = $element['#title'];

  if (module_load_include('inc','pathauto','pathauto') !== FALSE) {
    $menu_string =  pathauto_cleanstring($menu_string);
  }

  if ($menu_string == 'categories') {
    $sub_menu = get_categories_menu();
  }

  if ($sub_menu) {
    $element['#attributes']['class'][] = 'haschildren';
  }

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

function get_categories_menu() {

  $current_category = arg(2); // Get current category from path
  $volcab = taxonomy_vocabulary_machine_name_load('product-categories');
  $tree = taxonomy_get_tree($volcab->vid,0,1);

  $output = '<ul class="menu product-category">';
  foreach ($tree as $term) {
    $safe_term = pathauto_cleanstring($term->name);
    $class = ($current_category==$safe_term) ? ' class="active"' : '';
    $output .= '<li><a' . $class . ' href="/drupal//path/to/' . $safe_term . '">' . $term->name . '</a></li>';
  }
  $output .= '</ul>';

  return $output;
}

Get_category_menu फ़ंक्शन एक ब्लॉक के रूप में बेहतर है, लेकिन यहां सुविधा के लिए टेम्पलेट में अन्य फ़ंक्शन के रूप में दिखाया गया है।

आशा है कि यह मदद करता है या कम से कम एक समाधान की दिशा में एक कदम है।

पॉल

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.