अपनी मॉड्यूल को .info.yml फ़ाइल के माध्यम से Drupal 8 को बताइए
मुख्य विषय: प्रोजेक्ट मेटाडेटा
.info.yml फ़ाइल (जिसे «info yaml फ़ाइल» भी कहा जाता है) Drupal 8 मॉड्यूल, थीम या इंस्टॉलेशन प्रोफ़ाइल का एक महत्वपूर्ण हिस्सा है, जिसका उपयोग प्रोजेक्ट के मेटाडेटा को स्टोर करने के लिए किया जाता है।
ये .info.yml फाइलें आवश्यक हैं:
- Drupal को मॉड्यूल, थीम या इंस्टॉलेशन प्रोफ़ाइल के अस्तित्व के बारे में बताने के लिए।
- प्रकार के अनुसार थीम और मॉड्यूल में अंतर करने के लिए।
- Drupal वेब UI प्रशासनिक पेजों के लिए जानकारी प्रदान करने के लिए।
- मॉड्यूल की सक्रियता और निष्क्रियता तथा Drupal संस्करण संगतता के प्रबंधन मानदंडों को निर्दिष्ट करने के लिए।
- अन्य संदर्भों में सामान्य प्रशासनिक उद्देश्यों के लिए।
अधिक जानकारी के लिए नवीनतम API देखें InfoParserInterface.php। (सोर्स देखें पर क्लिक करें।)
Hello World
नीचे hello_world.info.yml फ़ाइल दी गई है, जिसका हम उपयोग करेंगे। यदि आप आगे बढ़ना चाहते हैं, तो अपने मॉड्यूल की रूट फोल्डर में एक नई फ़ाइल hello_world.info.yml बनाएँ और इसमें यह कोड डालें।
name: Hello World Module description: Creates a page showing "Hello World". package: Custom type: module core: 8.x
आइए देखें कि प्रत्येक पंक्ति क्या करती है।
पहली तीन पंक्तियाँ मुख्य रूप से प्रशासनिक UI में उपयोग होती हैं, जब उपयोगकर्ता आपके मॉड्यूल को सक्षम या अक्षम कर सकते हैं। name और description कुंजियाँ उस पाठ को प्रदान करती हैं जो मॉड्यूल प्रशासन पेज पर दिखाई देता है, और package कुंजी समान मॉड्यूल्स को समूहबद्ध करने की अनुमति देती है। उदाहरण के लिए, Core Drupal 8 के साथ प्रदान किए गए सभी मॉड्यूल्स को समूहबद्ध करने के लिए package: Core का उपयोग करता है। इसी तरह, आप अपने प्रोजेक्ट के सभी कस्टम मॉड्यूल्स को समूहबद्ध करने के लिए package: Custom का उपयोग कर सकते हैं।
Drupal 8 में नया type कुंजी एक्सटेंशन के प्रकार को निर्दिष्ट करती है, जैसे मॉड्यूल, थीम या प्रोफ़ाइल।
Drupal.org पर होस्ट किए गए मॉड्यूल्स के लिए, संस्करण संख्या पैकेजिंग स्क्रिप्ट द्वारा भरी जाएगी। आपको इसे मैन्युअल रूप से निर्दिष्ट नहीं करना चाहिए, बल्कि version पंक्ति को पूरी तरह छोड़ देना चाहिए।
core कुंजी यह निर्दिष्ट करती है कि आपका मॉड्यूल Drupal के किस कोर संस्करण के साथ संगत है।
name, type और core अनिवार्य कुंजियाँ हैं।
core_version_requirement निर्दिष्ट करना
चेतावनी
वर्तमान में DrupalCI उन टेस्ट पैच का समर्थन नहीं करता है, जो core_version_requirement को बदलते हैं।
क्या आपको core_version_requirement की आवश्यकता है?
कोर संस्करण प्रतिबंधों को परिभाषित करते समय निम्नलिखित प्राथमिकता क्रम का उपयोग किया जाता है।
- यदि composer.json में कोर आवश्यकता निर्दिष्ट है, तो यह सबसे अधिक प्राथमिकता प्राप्त करता है।
- यदि composer.json में कोर आवश्यकता नहीं है, तो info.yml में core_version_requirement अगले से अधिक प्राथमिकता प्राप्त करेगा।
- यदि info.yml में core_version_requirement सेट नहीं है, तो मुख्य मॉड्यूल में info.yml की dependencies में निर्दिष्ट किसी भी संस्करण का उपयोग किया जाएगा।
core_version_requirement आवश्यक होने पर निर्दिष्ट करना
मॉड्यूल्स, थीम्स और प्रोफाइल्स के * .info.yml फाइलों में नया core_version_requirement कुंजी अब Composer प्रोजेक्ट में लागू सेमांटिक वर्शनिंग का समर्थन करता है। यह मॉड्यूल्स, थीम्स और प्रोफाइल्स को यह निर्दिष्ट करने की अनुमति देता है कि वे Drupal कोर के कई प्रमुख संस्करणों के साथ संगत हैं।
उदाहरण के लिए, Drupal 8 और Drupal 9 के साथ संगत मॉड्यूल का info.yml इस तरह हो सकता है:
name: My Module type: module core: 8.x core_version_requirement: ^8 || ^9
यह दर्शाता है कि मॉड्यूल Drupal 8 और 9 के सभी संस्करणों के साथ संगत है। core यहाँ आवश्यक है क्योंकि Drupal Core के 8.7.7 से पहले के संस्करण core_version_requirement कुंजी को नहीं पहचानते।
हालाँकि, अधिकांश मॉड्यूल्स को Drupal 9 के साथ संगत होने के लिए पुराना कोड हटाना पड़ेगा। इसलिए वे Drupal 8 के सभी संस्करणों के साथ संगत नहीं हो सकते।
उदाहरण के लिए, Drupal 8.8.0 के बाद के Drupal 8 संस्करणों और Drupal 9 के साथ संगत मॉड्यूल को इस तरह का info.yml चाहिए होगा:
name: My Module type: module core_version_requirement: ^8.8 || ^9
यहाँ core कुंजी उपयोग नहीं की जानी चाहिए, ताकि यह सुनिश्चित हो सके कि Drupal 8.7.7 से पहले के संस्करण मॉड्यूल को इंस्टॉल नहीं करेंगे। core और core_version_requirement दोनों को किसी भी अन्य मान के साथ जोड़ना (core_version_requirement: ^8 || ^9 के अलावा) एक अपवाद उत्पन्न करेगा।
core_version_requirement का उपयोग Drupal 8.7.7 से पहले के कोर संस्करणों को सीमित करने के लिए नहीं किया जा सकता। उदाहरण के लिए, core_version_requirement: ^8.7 || ^9 पार्सिंग के दौरान अपवाद उत्पन्न करेगा, क्योंकि ^8.7 में 8.7.0 जैसे संस्करण शामिल होंगे, जो core_version_requirement कुंजी को नहीं पहचानते।
यह महत्वपूर्ण है कि जब core_version_requirement कुंजी ^8 || ^9 के अलावा किसी अन्य चीज़ के साथ उपयोग की जाती है, तो उस मॉड्यूल का परीक्षण Drupal 8.7.7 या नए संस्करण पर किया जाना चाहिए।
पूर्ण उदाहरण
पिछले उदाहरण में दिखाए गए मुख्य गुणों के अलावा, कई अतिरिक्त गुण भी हैं। यह एक पूर्ण उदाहरण है।
name: Hello World Module description: Creates a page showing "Hello World". package: Custom type: module core: 8.x dependencies: - drupal:link - drupal:views - paragraphs:paragraphs - webform:webform (>=8.x-5.x) test_dependencies: - drupal:image configure: hello_world.settings php: 5.6 hidden: true required: true # Note: do not add the 'version' or 'project' properties yourself. # They will be added automatically by the packager on drupal.org. # version: 1.0 # project: 'hello_world'
- dependencies: उन अन्य मॉड्यूल्स की सूची, जिन पर आपका मॉड्यूल निर्भर है। Drupal कोर या contrib मॉड्यूल्स की निर्भरताएँ {project}:{module} प्रारूप में नेमस्पेस की जानी चाहिए। उदाहरण: drupal:views। निर्भरताओं में संस्करण सीमाएँ भी शामिल हो सकती हैं, जैसे webform:webform (>=8.x-5.x)। ध्यान दें कि यदि आपके मॉड्यूल में अन्य मॉड्यूल्स या लाइब्रेरीज़ पर निर्भरता है, तो उन्हें composer.json में घोषित किया जाना चाहिए।
- test_dependencies: उन मॉड्यूल्स की सूची, जिनकी आवश्यकता आपके मॉड्यूल के कुछ स्वचालित परीक्षणों को चलाने के लिए होती है, लेकिन जो सामान्य मॉड्यूल निर्भरता नहीं हैं। इन्हें Git में कमिट करना आवश्यक है।
- configure: यदि आपका मॉड्यूल एक कॉन्फ़िगरेशन फॉर्म प्रदान करता है, तो आप यहाँ उस फॉर्म का रूट निर्दिष्ट कर सकते हैं। यह /admin/modules पेज पर लिंक के रूप में दिखाई देगा।
- php: 5.6: आपके मॉड्यूल के लिए आवश्यक न्यूनतम PHP संस्करण निर्दिष्ट करता है।
- hidden: true: यह आपके मॉड्यूल को «Extensions» पेज की सूची से छिपा देगा।
- required: true: यह दर्शाता है कि आपका मॉड्यूल सक्षम रहना चाहिए और इसे हटाया नहीं जा सकता।
- सीमित गुण: Drupal पैकेजिंग सिस्टम द्वारा जोड़े गए version और project। इन्हें मैन्युअल रूप से न जोड़ें।
.info.yml फ़ाइलों की डिबगिंग
मॉड्यूल admin/modules पेज पर सूचीबद्ध नहीं है
- सुनिश्चित करें कि सूचना फ़ाइल का नाम {machine_name}.info.yml है और यह मॉड्यूल की रूट डायरेक्टरी में है।
- सुनिश्चित करें कि फ़ाइल का फ़ॉर्मेट सही है।
- सुनिश्चित करें कि फ़ाइल में निम्न पंक्ति है:
type: module
- सुनिश्चित करें कि मॉड्यूल का नाम अक्षर या अंडरस्कोर से शुरू होता है।
फ़ंक्शन नाम PHP में अन्य लेबल्स के समान नियमों का पालन करते हैं। मान्य फ़ंक्शन नाम अक्षर या अंडरस्कोर से शुरू होना चाहिए, जिसके बाद कोई भी संख्या में अक्षर, अंक या अंडरस्कोर हो सकते हैं।
मॉड्यूल admin/modules में सूचीबद्ध है, लेकिन चेकबॉक्स निष्क्रिय है
- सुनिश्चित करें कि कोर संगतता 8.x पर सेट है।
core: 8.x
- सुनिश्चित करें कि सभी मॉड्यूल निर्भरताएँ उपलब्ध हैं।
ध्यान दें कि कुछ मॉड्यूल Drupal 8 कोर से स्थानांतरित कर दिए गए, जबकि अन्य नए कोर मॉड्यूल्स में जोड़े गए।
मॉड्यूल विवरण खाली है
याद रखें कि description मान विवरण के लिए उपयोग किया जाता है।
description: Example Module description.
composer.json फ़ाइल जोड़ना
अन्य मॉड्यूल्स पर निर्भरता घोषित करने के अलावा, यदि आपका मॉड्यूल drupal.org पर contrib मॉड्यूल है और आप DrupalCI का उपयोग करके निर्भरताओं का परीक्षण करना चाहते हैं, तो आपके पास composer.json होना चाहिए, जो उन निर्भरताओं को व्यक्त करता है।
यह भी देखें
- YAML
- .info से .info.yml परिवर्तन सूचना
- API दस्तावेज़ीकरण
InfoParser::parse()
के लिए - Drupal 7 मॉड्यूल्स .info फाइलें
- Drupal 6 मॉड्यूल्स .info फाइलें
- .info.yml फ़ाइल के साथ थीम परिभाषित करना
- Drupal 7 मॉड्यूल्स को Drupal 8 में बदलना
- मॉड्यूल्स अब .info.yml फ़ाइल के माध्यम से स्टाइलशीट्स/स्क्रिप्ट्स नहीं जोड़ सकते
- composer.json जोड़ें