logo

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

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

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

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

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

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

स्क्रॉल

Drupal 8 में अपग्रेड करते समय माइग्रेशन कॉन्फ़िगरेशन (Migration Configuration when Upgrading to Drupal 8)

01/10/2025, by Ivan

Menu

अपनी प्रारंभिक माइग्रेशन बनाएँ

  • Drush का उपयोग करके अपग्रेड सेक्शन में बताए अनुसार drush migrate-upgrade --configure-only का उपयोग करके माइग्रेशन बनाएँ।
  • सुनिश्चित करें कि आपके पास एक config/sync डायरेक्टरी है, जिसमें अगला स्टेप लिखा जाएगा।
  • drush config:export का उपयोग करके माइग्रेशन एक्सपोर्ट करें।
  • अपना स्वयं का माइग्रेशन मॉड्यूल बनाएँ।
  • config/sync डायरेक्टरी से केवल उन्हीं YML फ़ाइलों को कॉपी करें जिन्हें आप उपयोग करना चाहते हैं, और उन्हें अपने नए कस्टम मॉड्यूल की config/install डायरेक्टरी में डालें। uuid मान हटा दें और आवश्यकता अनुसार id, group, label और अन्य मानों को संपादित करें।
  • config/sync से migrate_plus.migration_group.migrate_drupal_7.yml फ़ाइल को कॉपी करें और उसे अपने कस्टम मॉड्यूल की config/install डायरेक्टरी में migrate_plus.migration_group.your_module.yml नाम दें। यह फ़ाइल आवश्यक है क्योंकि इसमें डेटाबेस सेटिंग्स होती हैं।

माइग्रेशन प्रबंधन

  • नोड्स पर जाने से पहले कस्टम रोल्स और यूज़र्स की माइग्रेशन से शुरुआत करें।
  • जैसे-जैसे आप config/install डायरेक्टरी में फ़ाइलें जोड़ते जाते हैं, डायरेक्टरी को फिर से पढ़ने के लिए drush config-import --partial --source=modules/custom/your_module/config/install जैसा कमांड चलाएँ (इसके लिए Config मॉड्यूल सक्षम होना चाहिए)।

Drupal 8 में अपग्रेड करते समय फ़ील्ड्स का नाम बदलना

मान लीजिए कि आपकी Drupal 7 साइट में कंटेंट टाइप A है, जिसमें foo, bar और baz नामक फ़ील्ड्स हैं। और मान लीजिए कि आप Drupal 8 में baz फ़ील्ड का नाम बदलकर zot रखना चाहते हैं। जब आप drush का उपयोग करके अपग्रेड करते हैं, तो इस तरह के बदलाव करना काफी आसान है।

  • ऊपर बताए गए अनुसार drush migrate-upgrade --configure-only का उपयोग करके माइग्रेशन बनाएँ।
  • नोड टाइप और फ़ील्ड माइग्रेशन चलाएँ। यह कंटेंट टाइप A और फ़ील्ड्स foo, bar और baz बनाएगा।
  • Drupal 8 में मैन्युअल रूप से zot फ़ील्ड बनाएँ। baz फ़ील्ड को हटा दें जिसे माइग्रेशन ने बनाया था लेकिन जिसे आप उपयोग करने की योजना नहीं बना रहे हैं।
  • Migrate Plus मॉड्यूल कॉन्फ़िगरेशन ऑब्जेक्ट्स के रूप में प्लगइन्स को लागू करने की अनुमति देता है। drush migrate-upgrade --configure-only से बनाए गए माइग्रेशन अब admin/config/development/configuration/single/export पर जाकर देखे जा सकते हैं। वहाँ «Migration» को कॉन्फ़िगरेशन प्रकार के रूप में चुनें और नोड्स (A) के लिए माइग्रेशन चुनें।
  • माइग्रेशन को कॉपी करके admin/config/development/configuration/single/import में पेस्ट करें, लेकिन फ़ील्ड मैपिंग बदल दें ताकि डेस्टिनेशन फ़ील्ड field_zot हो, जबकि सोर्स अभी भी field_baz से आ रहा हो। माइग्रेशन परिभाषा की सटीक सामग्री फ़ील्ड के प्रकार पर निर्भर करेगी। माइग्रेशन की संरचना को समझने के लिए Migrate API डाक्यूमेंटेशन में दिए गए उदाहरण देखें।
  • संशोधित माइग्रेशन इम्पोर्ट करने के बाद, Drush का उपयोग करके नोड्स A के लिए माइग्रेशन चलाएँ और सुनिश्चित करें कि डेटा सही ढंग से zot फ़ील्ड में चला गया है।
  • यदि आप नोड रिवीज़न को भी माइग्रेट करने की योजना बना रहे हैं, तो नोड रिवीज़न (A) माइग्रेशन के लिए भी फ़ील्ड मैपिंग बदलें।

उसी परिणाम को प्राप्त करने का एक और तरीका है zot नाम का नया फ़ील्ड मैन्युअल रूप से बनाना और hook_migration_plugins_alter() को लागू करके नोड्स (A) माइग्रेशन में फ़ील्ड मैपिंग बदलना। hook_migration_plugins_alter() के बारे में और जानकारी यहाँ उपलब्ध है।

कस्टम प्रोसेस प्लगइन्स लिखना

यदि आपको अपनी स्वयं की परिवर्तन लॉजिक (जैसे if-else) परिभाषित करनी हो, तो आप कस्टम प्रोसेस प्लगइन लिखने पर विचार कर सकते हैं।

Migrate API डाक्यूमेंटेशन में दिया गया उदाहरण यूज़र माइग्रेशन को आधार बनाता है। उदाहरण के अनुसार, यूज़र की भाषा कोड निर्धारित करने के लिए if-else लॉजिक की आवश्यकता होती है, और इसलिए User मॉड्यूल UserLangocode नामक अपना प्रोसेस प्लगइन प्रदान करता है।

ऊपर का उदाहरण दिखाता है कि प्रोसेस को MODULE/src/Plugin/migrate/process डायरेक्टरी में कैसे सेव किया जाना चाहिए और इसे कैसे annotate किया जाना चाहिए ताकि इसे उपयोग किया जा सके। अपना प्लगइन लिखते समय UserLangcode और अन्य प्रोसेस प्लगइन्स को उदाहरण के रूप में देखें।

hook_migrate_prepare_row()

यदि आपको अपनी स्वयं की परिवर्तन लॉजिक परिभाषित करनी हो, तो आप अपने कस्टम मॉड्यूल में hook_migrate_prepare_row() भी लागू कर सकते हैं।

API डाक्यूमेंटेशन के अनुसार, इस हुक में तीन आर्गुमेंट्स होते हैं:

आप अपनी लॉजिक को केवल इच्छित माइग्रेशन तक सीमित करने के लिए $migration->id() का उपयोग कर सकते हैं।

स्रोत प्रॉपर्टी को एक वेरिएबल में पढ़ने के लिए Row::getSourceProperty() का उपयोग करें। उदाहरण के लिए, यदि स्रोत पंक्ति में type नाम की प्रॉपर्टी है, तो आप लिख सकते हैं: $type = $row->getSourceProperty('type');

एक नया प्रॉपर्टी सेट करने के लिए, जिसे आप माइग्रेशन परिभाषा में स्रोत के रूप में उपयोग कर सकते हैं, Row::setSourceProperty() का उपयोग करें।

स्रोत साइट पर डेटाबेस क्वेरी करने के लिए, $source->getDatabase()->query() का उपयोग करें।

किसी पंक्ति को माइग्रेशन से छोड़ने के लिए, एक नया MigrateSkipRowException थ्रो करें।

hook_migration_plugins_alter()

माइग्रेशन को अनुकूलित करने का एक और तरीका अपने कस्टम मॉड्यूल में hook_migration_plugins_alter() को लागू करना है।

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

Migrate Plus PREPARE_ROW इवेंट प्रदान करता है

यदि आप hook_migrate_prepare_row() को लागू करने के बजाय ऑब्जेक्ट-ओरिएंटेड तरीके से prepare_row हैंडलर के लिए अपने कस्टम रिस्पॉन्स लिखना पसंद करते हैं, तो आप ऐसा कर सकते हैं यदि आपके पास Migrate Plus मॉड्यूल सक्षम है। Migrate Plus एक PREPARE_ROW इवेंट प्रदान करता है, जिस पर आपका सब्सक्राइबर सब्सक्राइब कर सकता है। Drupal 8 API डाक्यूमेंटेशन इवेंट्स के लिए उपलब्ध है। किसी अन्य संदर्भ में इवेंट सब्सक्राइबर को लागू करने के उदाहरण के लिए आप Simple FB Connect मॉड्यूल गाइड का यह उदाहरण देख सकते हैं।