Drupal बंडल इनहेरिट - अनुवांशिक प्रकार के लिए मॉड्यूल

सामान्य विचार


इस मॉड्यूल को विकसित करने का विचार था (जैसा कि अक्सर होता है) इसकी तत्काल आवश्यकता से निर्धारित होता है।

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

अब एक स्थिति की कल्पना करें जब आपको कई श्रेणियों के साथ एक सूची को व्यवस्थित करने की आवश्यकता होती है जो पदानुक्रमित संबंधों से जुड़ी होती है। स्पष्टता के लिए, एक समान संरचना की कल्पना करें।

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

इस प्रकार, निम्नलिखित योजना प्राप्त की जाती है।
  1. आधार प्रकार
  2. कंप्यूटर (आधार प्रकार वारिस)
  3. लैपटॉप, पीसी, टैबलेट ("कंप्यूटर" का प्रकार विरासत में मिला)

मॉड्यूल क्या देता है


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

अधिक दिलचस्प है। मॉड्यूल दो प्रकार की विरासत का समर्थन करता है: नरम और सख्त।

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

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

मॉड्यूल कैसे व्यवस्थित किया जाता है


एक मॉड्यूल वास्तव में दो मॉड्यूल का एक सेट है।

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

दूसरा (बंडल_इनहेरिट_नोड मॉड्यूल) बंडल इनहेरिट एपीआई का उपयोग करने का एक उदाहरण है। टिप्पणियों सहित कोड की सिर्फ 40 पंक्तियों से मिलकर, मॉड्यूल नोड सिस्टम मॉड्यूल का विस्तार करता है जिससे आप सामग्री प्रकारों को प्राप्त कर सकते हैं।

मॉड्यूल का उपयोग


अंतिम उपयोगकर्ता के दृष्टिकोण से

एक नई सामग्री प्रकार बनाते समय, इनहेरिट टैब ढूंढें, संबंधित बॉक्स को जांचें और मूल प्रकार का चयन करें। यह बात है।

डेवलपर के दृष्टिकोण से

उदाहरण बंडले_इनहेरिट_नोड मॉड्यूल का उपयोग करके कार्यान्वयन देखें।
एक अनियंत्रित प्रकार की इकाई में वंशानुक्रम को जोड़ने के लिए सभी की जरूरत है कि एक नया प्रकार बनाने के लिए एक फार्म का पता लगाएं और उस पर बंडल_इनहेरिट_टैच_इनहेरिट_फॉर्म फ़ंक्शन का उपयोग करें। इसके अलावा, अपने सबमिट कॉलबैक को इसमें जोड़ना न भूलें और इसमें बंडल_inherit_attach_inherit_form_submit फ़ंक्शन को कॉल करें। और जो कहा जाता है, वही जादू है।

संभावनाओं


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

कहाँ से लाऊँ?


Drupal.org: drupal.org/project/bundle_inherit
GitHub: github.com/numesmat/Drupal-Bundle-Inherit

Source: https://habr.com/ru/post/In130870/


All Articles