logo

एक्स्ट्रा ब्लॉक टाइप्स (EBT) - नया लेआउट बिल्डर अनुभव❗

एक्स्ट्रा ब्लॉक टाइप्स (EBT) - स्टाइलिश, कस्टमाइज़ेबल ब्लॉक टाइप्स: स्लाइडशो, टैब्स, कार्ड्स, एकॉर्डियन्स और कई अन्य। बैकग्राउंड, DOM बॉक्स, जावास्क्रिप्ट प्लगइन्स के लिए बिल्ट-इन सेटिंग्स। आज ही लेआउट बिल्डिंग का भविष्य अनुभव करें।

डेमो EBT मॉड्यूल्स EBT मॉड्यूल्स डाउनलोड करें

❗एक्स्ट्रा पैराग्राफ टाइप्स (EPT) - नया पैराग्राफ्स अनुभव

एक्स्ट्रा पैराग्राफ टाइप्स (EPT) - एनालॉजिकल पैराग्राफ आधारित मॉड्यूल्स का सेट।

डेमो EPT मॉड्यूल्स EPT मॉड्यूल्स डाउनलोड करें

स्क्रॉल
04/10/2025, by Ivan

Menu

अब, जब हमने अपने मॉड्यूल की सेटिंग्स पेज के लिए एक प्लेसहोल्डर बना लिया है, तो चलिए एक मेन्यू लिंक जोड़ते हैं। नीचे दिए गए निर्देश दिखाते हैं कि «प्रबंधन > कॉन्फ़िगरेशन» (http://example.com/admin/config) पेज पर «डेवलपमेंट» सेक्शन में hello_world मॉड्यूल के लिए मेन्यू लिंक कैसे बनाया जाए।

अपने मॉड्यूल की रूट फोल्डर में एक नया फ़ाइल बनाएं जिसका नाम hello_world.links.menu.yml हो और इसमें निम्नलिखित जोड़ें:

hello_world.admin:
  title: 'Hello module settings'
  description: 'example of how to make an admin settings page link'
  parent: system.admin_config_development
  route_name: hello_world.content
  weight: 100

ध्यान दें कि पहली पंक्ति नामस्थान (namespace) को आरक्षित करती है, जैसे कि हमारे रूटिंग फ़ाइल उदाहरण में। साथ ही पाँचवीं पंक्ति में हमारे route_name के उपयोग पर भी ध्यान दें (हम रूटिंग फ़ाइल उदाहरण की पहली पंक्ति से नामस्थान का उपयोग करते हैं)। शीर्षक और विवरण «डेवलपमेंट» सेक्शन में दिखाई देंगे। ध्यान दें कि parent पंक्ति मेन्यू के पैरेंट लिंक को निर्दिष्ट करती है। दूसरे शब्दों में, मेन्यू लिंक admin, config, development के अंतर्गत बनाया जाएगा।

यह hello_world.content (इस उदाहरण में hello_world.routing.yml) में परिभाषित पथ पर एक लिंक जोड़ देगा, जो आपके साइट के एडमिनिस्ट्रेशन पेज पर «कॉन्फ़िगरेशन» टैब (/admin/config) में «डेवलपमेंट» सेक्शन के अंतर्गत दिखेगा। निश्चित रूप से, परिवर्तनों को प्रभावी करने के लिए आपको कैश साफ़ करना होगा।

कैश साफ़ करने के बाद, आप «Hello मॉड्यूल सेटिंग्स» मेन्यू लिंक को कॉन्फ़िगरेशन पेज के «डेवलपमेंट» सेक्शन में पाएंगे। लिंक पर क्लिक करने से hello_world मॉड्यूल कॉल होगा।

अतिरिक्त सुझाव

.links.menu.yml फ़ाइल काफी लचीली है। आप इसे बाहरी संसाधनों या अन्य लिंक पर रीडायरेक्ट करने के लिए भी उपयोग कर सकते हैं:

hello_world.admin:
  title: 'Hello module settings'
  description: 'example of how to make an admin settings page link'
  parent: system.admin_config_development
  url: http://example.com/this-is-some-example
  weight: 100
hello_world.admin2:
  title: 'Hello module settings'
  description: 'example of how to make an admin settings page link'
  parent: system.admin_config_development
  url: internal:/some-internal-path

 

संपादन योग्य नहीं:

ध्यान दें कि जब आप yml फ़ाइलों और कस्टम मॉड्यूल्स के माध्यम से मेन्यू लिंक बनाते हैं, तो आपको ऐसे मेन्यू लिंक मिलते हैं जिन्हें UI से संपादित नहीं किया जा सकता। आप केवल yml फ़ाइल के माध्यम से लिंक बदल सकते हैं। इन्हें मॉड्यूल-प्रबंधित माना जाता है, न कि प्रशासनिक। जब आप मेन्यू आइटम के लिए संपादन बटन दबाते हैं, तो आपको यह संदेश मिलता है: «यह लिंक XXX मॉड्यूल द्वारा प्रदान किया गया है। शीर्षक और पथ को संपादित नहीं किया जा सकता»।

not-editable-menu-link

संपादन योग्य मेन्यू लिंक बनाने के लिए, आपको इसे लगभग इस तरह करना होगा:

  $my_menu = \Drupal::entityTypeManager()->getStorage('menu_link_content')
    ->loadByProperties(['menu_name' => 'my-menu-name']);
  foreach ($my_menu as $menu_item) {
    $parent_id = $menu_item->getParentId();
    if (!empty($parent_id)) {
      $top_level = $parent_id;
      break;
    }
  }
  $menu_link = MenuLinkContent::create([
    'title' => 'My menu link title',
    'link' => ['uri' => 'internal:/my/path'],
    'menu_name' => 'my-menu-name',
    'parent' => $top_level,
    'expanded' => TRUE,
    'weight' => 0,
  ]);
  $menu_link->save();