के देश में आपका स्वागत है एफ eatures सी onfiguration एम anagement, उर्फ FCM ! यह केवल विशेषताओं के बारे में नहीं है , और कॉन्फ़िगरेशन प्रबंधन के बारे में नहीं है (जैसा कि Drupal संस्करण 8 में पेश किया गया है)। इसके बजाय, यह की एक विशेष मामला है एस oftware सी onfiguration एम anagement , उर्फ एससीएम । अधिकतर इसलिए कि सुविधाओं को एक कोड जनरेटर के रूप में माना जा सकता है, जबकि उत्पन्न कोड को कई वातावरणों के माध्यम से माइग्रेट करना होगा। अधिक जानकारी के लिए पढ़ें।
1 - सुविधाओं का उपयोग करने के पेशेवरों और विपक्ष
सुविधाओं का उपयोग करने के लाभ
- एक या एक से अधिक लक्ष्य Drupal (पूर्व) उत्पादन साइटों (मैनुअल परिनियोजन के बजाय) के लिए एक Drupal विकास साइट पर लागू परिवर्तनों की तैनाती को स्वचालित करें।
- Drupal Developers / साइट बिल्डरों के बीच चल रहे Drupal Development (जैसे कुछ दृश्य बनाने के लिए) के साझाकरण (शिपिंग) की सुविधा प्रदान करता है, जो कि एक Drupal Themer के लिए उपलब्ध एक व्यू एक्सपर्ट द्वारा उपलब्ध कराया गया है, जो उस व्यू को थीम देने के लिए किसी अन्य डेवलपमेंट साइट में काम करता है।
- जीआईटी और ड्रश दोनों के साथ महान एकीकरण चयनित लक्ष्य (प्री-) उत्पादन साइटों के लिए सुविधाओं (विकास साइट पर) द्वारा उत्पन्न कोड की एक प्रति शिपिंग के लिए ।
सुविधाओं का उपयोग करने के नुकसान
- फ़ीचर संघर्षों और / या फ़ीचर डिपेंडेंसी को प्रबंधित करना चुनौतीपूर्ण हो सकता है!
- मौजूदा (उत्पादन) साइट पर सुविधाओं का उपयोग शुरू करना आसान नहीं है ।
- सुविधाएँ मॉड्यूल को स्थापित / सक्षम करना आसान है (सिर्फ एक मॉड्यूल), लेकिन सुविधाओं का सही ढंग से उपयोग करना सीखना एक बड़ी चुनौती है।
2 - सुविधाओं पैकेजिंग के लिए तकनीक
सुविधाओं का उपयोग करना यह आपकी स्वयं की कल्पना पर निर्भर है कि किसी फीचर की सामग्री को कैसे पैकेज (रचना) करें। यहां कुछ तकनीकों का उपयोग किया जा सकता है।
एक सिंगल सुपर फीचर
यह एक बहुत ही सरल पैकेजिंग तकनीक है: सब कुछ एक ही सुविधा में एक साथ पैक किया जाता है (कुछ इसे "भगवान" सुविधा कहते हैं ...)। आसान लगता है, बहुत आगे, आदि। लेकिन यह तकनीक "संघर्ष" (जैसा कि नीचे बताया गया है) कम या ज्यादा दूर जाता है ...
इसके लिए एक अच्छा usecase "ड्रुपल वितरण" बनाते समय प्रतीत होता है, जहाँ इसके सभी उपयोगकर्ताओं को एक ही सेट मॉड्यूल, कॉन्फ़िगरेशन, आदि का उपयोग करने के लिए माना जाता है। यदि इस तरह के वितरण में कई वेबसाइट फ़ंक्शनलिटीज़ (शब्द का उपयोग नहीं करने के लिए) हैं "सुविधाएं" ...), इस तरह की सुविधाओं को कई विशेषताओं में विभाजित करना अधिक उचित लगता है, जैसा कि नीचे बताया गया है।
वेबसाइट की कार्यक्षमता के आधार पर
यह पैकेजिंग तकनीक किसी वेबसाइट की प्रत्येक कार्यक्षमता के लिए एक अलग सुविधा बनाती है, जैसे:
- फ़ीचर A = " गैलरी " लागू करें ।
- फ़ीचर B = एक " * ब्लॉग " लागू करें ।
- फ़ीचर C = " इवेंट कैलेंडर " लागू करें।
Drupal व्यवस्थापक अनुभागों के आधार पर
यह पैकेजिंग तकनीक एक Drupal वेबसाइट के प्रत्येक (प्रमुख) एडमिन सेक्शन के लिए अलग-अलग सुविधाएँ बनाती है, जिसका उपयोग साइट बनाने के लिए किया जाता है, जैसे:
- सभी आवश्यक मॉड्यूल सुविधा ए में निहित हैं,
- सभी आधार क्षेत्र परिभाषाएँ B में समाहित हैं,
- सभी सामग्री प्रकार सुविधा C में सम्मिलित हैं,
- सभी अनुमतियाँ सुविधा डी में सम्मिलित हैं,
- सभी भूमिकाएँ E में समाहित हैं,
- सभी चर सुविधा F में सम्मिलित हैं,
- सभी (कस्टम) दृश्य सुविधा G में समाहित हैं,
- सभी (कस्टम) नियम H में समाहित हैं,
- आदि।
उपरोक्त सूची वस्तुतः असीमित है: अंत में आप इसे प्रत्येक Drupal admin मेनू विकल्प के लिए 1 सुविधा के रूप में भी सोच सकते हैं ... यदि आप उस तक जाना चाहते हैं।
IMO यह पैकेज सुविधाओं के लिए सबसे अनुशंसित दृष्टिकोण भी है।
3 - फीचर्स और / या GIT में टकराव की संभावना को कम करना
खेतों का पुन: उपयोग न करें
कई सामग्री प्रकारों के बीच पुन: उपयोग करने के कारण कुछ संघर्ष प्रतीत होता है। उदाहरण में सामग्री प्रकार A में आपके पास मशीन नाम के साथ एक फ़ील्ड है field_somefield
, जिसका उपयोग सामग्री प्रकार B में फ़ील्ड के रूप में भी उसी मशीन के नाम के साथ किया जाता है, field_somefield
लेकिन जो किसी अन्य फ़ील्ड प्रकार और / या कुछ अन्य फ़ील्ड सेटिंग के रूप में भिन्न होता है।
सामग्री प्रकारों के बीच फ़ील्ड का पुन: उपयोग नहीं करने से, आप इस समस्या में चलने से बचते हैं। अपनी सामग्री प्रकारों और फ़ील्ड्स के मशीन नाम के लिए एक दिलचस्प नामकरण सम्मेलन पर नज़र डालें जैसा कि रैपिंग इन्फॉर्मेशन आर्किटेक्चर एंड डॉक्यूमेंटेशन की तालिका में दिखाया गया है , जो " ड्रुपल के लिए सापेक्षता मॉडल " के लेखों का हिस्सा है । उस पर अधिक विवरण के लिए " डेटाबेस-केंद्रित दृष्टिकोण से मैं कैसे सामग्री (प्रकार) मॉडल करता हूं " के लिए मेरे उत्तर को देखें ।
स्प्लिट फीचर्स इस बात पर निर्भर करता है कि कौन क्या काम करता है
यदि एक ही साइट पर कई लोग काम कर रहे हैं, तो कौन क्या काम कर रहा है, इस पर आधारित (= अलग-अलग) सुविधाओं को व्यवस्थित करके संघर्षों की मात्रा को कम किया जा सकता है। इसका उदाहरण इस उदाहरण में दिया जा सकता है:
- दृश्य A में जाता है,
- नियम B में जाता है,
- चार्ट सुविधा C में जाता है,
- Theming के बारे में कुछ भी सुविधा डी में जाता है,
4 - अनुशंसित Drupal वातावरण
उपरोक्त सभी चीज़ों को किसी भी तरह से सुविधाओं के उपयोग को सुविधाजनक बनाने में मदद करनी चाहिए । हालाँकि, यह सुनिश्चित करने के लिए कि चीजें अपेक्षा के अनुरूप (डिज़ाइन की गई) होंगी, आपको मूल रूप से इन कारणों के लिए उपयुक्त वातावरण (तार्किक रूप से संबंधित ड्रुपल वेबसाइट) की आवश्यकता होगी:
- कई विशेषताओं द्वारा प्रदान की गई मर्ज कार्यक्षमता।
- भविष्यवाणी और संघर्ष का समाधान।
- सभी मर्ज किए गए सुविधाओं का अंतिम-उपयोगकर्ता परीक्षण जो किसी भी संघर्ष के लिए प्रमाणित नहीं हैं।
आदर्श दुनिया में, इन तार्किक रूप से संबंधित Drupal वेबसाइटों को कॉन्फ़िगर किया जाना चाहिए, और उपयोग किया जाना चाहिए, जैसे:
- व्यक्तिगत देव साइट - प्रत्येक वेबसाइट डेवलपर की एक अलग देव साइट है। जब विकास का कुछ हिस्सा किसी और के साथ साझा करने के लिए तैयार होता है, तो एक उपयुक्त सुविधा बनाई जाती है, जिसे मंचन के माहौल में भेज दिया जाता है।
- सैंडबॉक्स साइट - यह एक ड्रुपल वातावरण है जिसमें केवल ड्रूपल कोर होता है, जिसका उपयोग एकल फीचर की पूर्णता की जांच करने के लिए किया जाता है। एक सुविधा के अनुसार, गलती से, कुछ अप्रत्याशित निर्भरताएं होती हैं (उदाहरण के लिए कुछ मॉड्यूल सुविधा पर निर्भर करता है, जो सैंडबॉक्स में सक्षम नहीं है), तो यह वह जगह है जहां निर्भरता स्पष्ट हो जाएगी।
- स्टेजिंग साइट - यहाँ वह जगह है जहाँ एक या एक से अधिक सुविधाएँ (देव साइट में बनाई गई) तक पहुँचाई जाती हैं। यह कुछ उत्पादन समस्या के लिए बस कुछ हॉटफ़िक्स हो सकता है, या यह वह जगह हो सकती है जहां वेबसाइट की नई रिलीज़ के लिए सभी विकास समेकित हैं। यदि कई विशेषताओं के बीच कोई संघर्ष मौजूद है, तो यह वह वातावरण है जहां वे पहली बार दिखाएंगे ... और किसी तरह हल करने की आवश्यकता है।
- क्यूए साइट - स्टेजिंग वातावरण को स्थिर माना जाने के बाद, यह प्रासंगिक विशेषताओं के साथ आगे बढ़ने और उन्हें कुछ उच्च स्तर पर भी उपलब्ध कराने का समय है जहां उनका उपयोग क्यूए परीक्षण, स्वीकृति परीक्षण, वॉल्यूम परीक्षण आदि के लिए किया जा सकता है। इस स्तर पर आप किसी भी अतिरिक्त परिवर्तन (यदि कोई हो) की अनुमति देने में बेहद सावधानी बरतनी चाहिए। क्योंकि इस तरह का कोई भी परिवर्तन इस वातावरण में पहले से ही पूरा किए गए सभी पूर्व परीक्षण प्रयासों को अमान्य कर सकता है।
- छाया उत्पादन साइट - वास्तविक उत्पादन में सक्रियण तैयार करने के लिए, आप सबसे पहले प्रासंगिक सुविधाओं को एक ऐसे वातावरण में बढ़ावा देना चाहते हैं जिसे आपके वास्तविक उत्पादन वातावरण की प्रतिलिपि (छाया) माना जाता है। यदि माइग्रेशन प्रक्रिया के दौरान इस बिंदु पर कुछ भी अभी भी टूटता है, तो यह आपके पूर्व चरणों में से कुछ को वापस करने के लिए एक लाल झंडा है। इसे ठीक करें, और फिर से प्रयास करें, जब तक कि इसमें शामिल सभी पक्ष परिवर्तनों को मंजूरी नहीं देते।
- प्रोडक्शन साइट (एस) - यदि आपने सभी पूर्व चरण पूरे कर लिए हैं, तो यह कदम स्वयं की व्याख्या करना और बहुत आसान होना चाहिए। आपकी आवश्यकताओं के आधार पर, यह एक एकल साइट या ड्रुपल मल्टी-साइट्स के बराबर कुछ हो सकता है, जबकि इसमें शामिल सभी साइटें सभी सुविधाओं के बहुत ही संस्करण चला रही हैं।
- बेसलाइन साइट - मेरे अनुभव में, कई (यदि कोई हो) ड्रुपल कार्यान्वयन नहीं हैं जहां इस प्रकार की साइट का उपयोग किया जाता है (भी)। यह केवल उत्पादन साइट (ओं) की एक प्रति है, लेकिन Drupal डेवलपर्स, परीक्षक, आदि के लिए उपलब्ध है, जिसका उपयोग यह सत्यापित करने के लिए किया जा सकता है कि उत्पादन साइटें कैसी दिखती हैं, या उपयोगकर्ता प्रशिक्षण, आदि करने के लिए और किसी भी समय एक नया विकास। चक्र शुरू हो गया है, एक साइट के घटक जो प्रभावित होंगे (उन्हें बदलने की आवश्यकता है) को इस तरह से बेसलाइन साइट को इनपुट के रूप में उपयोग करके "किसी तरह कॉपी किया जाना चाहिए", जैसा कि एक व्यक्तिगत विकास साइट को लक्षित करना है ।
जाहिर है, ड्रुपल साइटों की उपरोक्त सूची आदर्श दुनिया की तरह है। आपकी विकास टीम के आकार पर निर्भर करता है, और / या उपलब्ध बजट बनाने और उन्हें बनाए रखने के लिए, उनमें से सभी का उपयोग नहीं किया जा सकता है (या सस्ती)। यह इन्वेंट्री SCM के क्षेत्र में सर्वोत्तम प्रथाओं के बाद तैयार की गई है, जिसका उपयोग ज्यादातर सभी विशाल / वैश्विक निगमों (बैंकों, एयरलाइंस, आदि) में किया जाता है।
5 - संबंधित मॉड्यूल
मजबूत बांह
StrongARM मॉड्यूल (मॉड्यूल जो चर में अपने सेटिंग्स को संग्रहीत की) विशेषताएं मॉड्यूल के साथ चर निर्यात करने के लिए अनुमति देता है।
नोड निर्यात
नोड निर्यात मॉड्यूल निर्यात नोड्स करने के लिए उपयोगकर्ताओं की अनुमति देता है और फिर एक और Drupal स्थापना में आयात करें।
भूमिका निर्यात
भूमिका निर्यात मॉड्यूल भूमिकाओं machine_names की अनुमति देता है और एक अद्वितीय भूमिका आईडी (छुटकारा) machine_name के आधार पर उत्पन्न करता है। रोल्स को फीचर्स के साथ एक्सपोर्ट किया जा सकता है और अगर दूसरी साइट्स पर इंपोर्ट किया जाए तो इससे उतनी ही राहत मिल सकती है।
सुविधाएँ गायब हैं
निर्वासित विशेषताएं मॉड्यूल पूरी तरह से से सुविधाओं यूआई और सुविधाओं निर्यात व्यक्तिगत विशेषताओं घटकों को छोड़कर के लिए अनुमति देता है। इसके प्रोजेक्ट पृष्ठ से इसके बारे में एक उद्धरण इस प्रकार है:
यह मॉड्यूल तब उपयोगी होता है जब ऐसे फीचर घटक होते हैं जिन्हें आप सुनिश्चित करना चाहते हैं कि उन्हें कभी निर्यात न किया जाए। यदि आप साइट निर्माण या परिनियोजन के लिए सुविधाओं का उपयोग कर रहे हैं, तो संभवतः आप किसी ऐसे व्यक्ति के मामले में भाग गए हैं जो गलती से क्रोन_स्टल या अपडेट_ब्लास्ट_चेक जैसे टाइमस्टैम्प चर का निर्यात कर रहा है। आप डेवलपर मॉड्यूल के लिए अनुमतियों को भी बंद करना चाह सकते हैं ताकि वे उस साइट की शेष अनुमतियों के साथ न फंसें जिन्हें आप निर्यात करना चाहते हैं। गायब आइटम आपके फ़ीचर मॉड्यूल या किसी अन्य फीचर्स मॉडल में दिखाई नहीं देंगे, इसलिए सावधानी के साथ उपयोग करें। उन विशेषताओं की केंद्रीय सूची के लिए, जिन्हें कभी भी निर्यात नहीं किया जाना चाहिए, https://www.drupal.org/node/2400531 देखें
सेम
बीन मॉड्यूल अपने ब्लॉक निर्यात योग्य बनाता है। इसके प्रोजेक्ट पृष्ठ से इसके बारे में एक उद्धरण इस प्रकार है:
एक बीन को नए प्रकार प्रदान करने के लिए एक विधि के रूप में सोचें (नोड की तुलना में यह एक सामग्री प्रकार होगा) जो तब आपको कई ब्लॉक बनाने के लिए एक ऐड कंटेंट इंटरफ़ेस प्रदान करता है, जिसकी आपको आवश्यकता होती है (नीचे स्क्रीनशॉट देखें)। बीन की सामग्री को किसी भी अन्य ब्लॉक की तरह ही साइट के आसपास रखा जा सकता है।
यह मॉड्यूल यूयूआईडी और यूयूआईडी फीचर्स इंटीग्रेशन मॉड्यूल के संयोजन में भी बहुत अच्छा काम करता है । यह मॉड्यूल केवल डी 7 के रूप में शुरू हुआ था, लेकिन इसे पहले ही ड्रुपल 8 कोर के साथ शामिल किया गया है। वीडियो ट्यूटोरियल ड्रुपल बीन मॉड्यूल ट्यूटोरियल - बीन एडमिन यूआई का उपयोग वास्तव में इस मॉड्यूल की शक्ति को समझने के लिए एक महान परिचय प्रदान करता है, और जिस तरह की चीजें आप इसके साथ कर सकते हैं (केवल साइट निर्माण तकनीकों का उपयोग करके, कोई कस्टम कोडिंग शामिल नहीं है)।
वास
पर्यावास एक में मॉड्यूल सबसे समझ में आता है विशेषताएं आधारित कार्यप्रवाह। इसके प्रोजेक्ट पृष्ठ से इसके बारे में एक उद्धरण इस प्रकार है:
एक बहु-पर्यावरणीय सेटअप (उदाहरण के लिए ठेस, परीक्षण, देव, स्थानीय) में कुछ ऐसे मॉड्यूल होते हैं जिन्हें आप हमेशा कुछ परिवेशों में सक्षम या अक्षम करना चाहते हैं। हर बार जब आप एक डेटाबेस को सिंक करते हैं, तो आपको उसी मॉड्यूल को फिर से सक्षम / अक्षम करना होगा। इससे भी बदतर, आप आलसी हो जाते हैं और विकास मॉड्यूल को उत्पादन पर सक्षम रखते हैं।
पर्यावास प्रत्येक वातावरण (निवास) पर कुछ मॉड्यूल को सक्षम या अक्षम करने के लिए सेटिंग्स प्रदान करता है। जैसे $ $ [[निवास स्थान] = 'स्थानीय' के साथ एक चर सेट करें; आपकी सेटिंग में। php फ़ाइल (वहाँ का उपयोग करने के लिए वास्तविक चर आपके वर्तमान वर्कफ़्लो के लिए कॉन्फ़िगर करने योग्य है)। इनेबल / इनेबल्ड मॉड्यूल हुक_इनिट पर किया जाता है।
6 - अनुशंसित संसाधन:
7 - सुविधाओं का उपयोग करने के लिए संभावित विकल्प
यदि आप सुविधाओं का उपयोग करने में सक्षम, या इच्छुक (अभी तक) नहीं हैं , तो हो सकता है कि आप जांचना चाहें कि नीचे दिए गए दृष्टिकोण / मॉड्यूल का विस्तार किस प्रकार का विकल्प प्रदान कर सकता है।
मैनुअल निर्यात / आयात
ये सामान्य रूप से ज्ञात सुविधाएं हैं (शब्द सुविधाओं से बचने के लिए ...) नियम यूआई , व्यूज़ आदि जैसे मॉड्यूल के लिए उपलब्ध हैं (अधूरी सूची!)।
गठरी प्रतिलिपि
कुछ लोग बंडल कॉपी मॉड्यूल को एक संभावित विकल्प मानते हैं । इसके लिए निर्यात / आयात समर्थन है:
- नोड प्रकार।
- वर्गीकरण।
- उपयोगकर्ता।
- फ़ील्ड API फ़ील्ड्स।
- क्षेत्र समूह।