كيفية ترحيل المحتوى من ملفات XML إلى دروبال 8 (أو 9)

نشرت: 2021-10-05

إن سحب البيانات من مصادر مختلفة إلى Drupal CMS هو ما تدور حوله الهجرة. يمكن أن يكون مصدر الترحيل الخاص بك أي شيء - قاعدة بيانات أو CMS آخر أو CSV أو ملفات XML. يمنحك دروبال دائمًا المرونة لترحيل البيانات من أي مكان إلى نظام إدارة المحتوى. لقد كتبنا بشكل مكثف عن عمليات ترحيل دروبال من قبل مثل الترحيل من مصدر قاعدة بيانات وترحيل محتوى متعدد اللغات من CSV ومن مصدر SQL ودليل إرشادي كامل لعمليات الترحيل والمزيد! إذا كنت تبحث عن دليل لترحيل البيانات من ملفات XML إلى دروبال 8 أو دروبال 9 ، فقد وصلت إلى المكان الصحيح لأن هذا هو ما سنناقشه هنا!

إذا كنت تبحث عن استيراد موجز ويب خارجي إلى موقع ويب Drupal 9 الخاص بك باستخدام وحدة Drupal Feeds ، فاطلع على هذه المقالة.

XML إلى دروبال الهجرة

وحدات الترحيل دروبال 8/9

هنا ، سوف نستخدم مجموعة كاملة من وحدات ترحيل دروبال

  • يهاجر
  • هاجر دروبال
  • ترحيل Plus
  • ترحيل الأدوات

بعد تثبيت هذه الوحدات ، ستحتاج إلى إنشاء وحدة مخصصة حيث ستكتب البرنامج النصي للترحيل. لذلك أولاً ، قم بإنشاء وحدة مخصصة ثم قم بإنشاء ملف info.yml الذي سيتضمن تفاصيل الوحدة. بعد ذلك ، قم بتمكين الوحدة النمطية.

 name: test migration type: module description: Migrating data from the csv files. core_version_requirement: ^8 || ^9 package: Migration dependencies: - drupal:migrate_source_csv - drupal:migrate_plus - drupal:migrate_tools config_devel: install: - migrate_plus.migration_group.test_migration - migrate_plus.migration.test_migration_sessions - migrate_plus.migration.test_migration_paper - migrate_plus.migration.test_migration_user

بمجرد إنشاء ملف info.yml ، ستحتاج إلى إنشاء مجموعة ترحيل لهذا الترحيل. ستحتاج إلى إنشاء مجموعة الترحيل هذه في المسار: test_migration> config> install . هذه التفاصيل مطلوبة أثناء تشغيل الترحيل:

 id: test_migration label: test Migration description: Migrating xml data

بعد إنشاء مجموعة الترحيل ، قم بتثبيت هذه المجموعة في ملف info.yml الخاص بك.

 config_devel: install: - migrate_plus.migration_group.test_migration

الآن ، تحتاج إلى كتابة برنامج نصي للترحيل لنوع المحتوى. يجب أن يكون هذا البرنامج النصي داخل config> install ويجب أن يكون اسم الملف migrate_plus.migration.test_migration_paper.yml

 id: test_migration_paper label: 'Migrate Paper data from the xml file' migration_group: test_migration source: plugin: url # Full path to the file. data_fetcher_plugin: file data_parser_plugin: xml urls: private://xml/session.xml item_selector: /program/session/papers/paper fields: - name : title lable : 'Paper title' selector : papertitle - name : abstract lable : 'Paper abstract' selector : abstract - name : first_name label : 'Author first name' selector : authors/author/name/givenname - name : last_name label : 'Author last name' selector : authors/author/name/surname - name : paper_id label : 'Paper identifier' selector : paperid - name : session_id label : 'Session identifier' selector : sessionid - name : start_time label : 'Paper presentation start time' selector : starttime - name : end_time label : 'Paper presentation end time' selector : endtime - name : author_name label : 'Author name' selector : authors/author/name/fullname - name : session lable : 'Session name' selector : session ids: session_id : type : string process : # Adding the mapping between the fields and the csv columns. title : - plugin : skip_on_empty method : process source : title field_abstract/value : abstract field_abstract/format : plugin : default_value default_value : "full_html" field_presentation_timing/value : plugin : format_date from_format : 'Ymd\TH:i:s' to_format : 'Ymd\TH:i:s' source : start_time field_presentation_timing/end_value : plugin : format_date from_format : 'Ymd\TH:i:s' to_format : 'Ymd\TH:i:s' source : end_time field_paper_identifier : paper_id field_session_identifier : session_id field_author : - plugin : skip_on_empty method : process source : author_name - plugin : paper_user_migration_import_process no_stub : true field_session : - plugin : skip_on_empty method : process source : session - plugin : node_migration_import_process no_stub : true destination : plugin : 'entity:node' default_bundle : paper migration_dependencies : required : { } dependencies : { }
تسمية الإعلان

  • المعرف : سيكون فريدًا لكل ملف yaml ويتم عرضه في قائمة الترحيل.
  • التسمية : ستتضمن وصفًا للترحيل.
  • igration_group : هذه هي المجموعة الرئيسية التي تحتوي على جميع الهجرات.
  • المصدر : سوف يحتوي على جميع تفاصيل المصدر لهذا الترحيل.
  • urls : سوف تحتوي على ملف الترحيل. في الكود أعلاه ، يتم وضع المصدر داخل الدليل الخاص.
  • item_selector : محدد العنصر هو المسار الذي تؤخذ منه مجموعة البيانات بأكملها. يجب أن تكون هناك مجموعة واحدة من البيانات داخل هذه العلامة.
  • الحقول : هنا نقوم بتعيين قيم الوسم لبعض المتغيرات.
  • الاسم : الذي يعطي أسماء المتغيرات.
  • التسمية : وصف موجز.
  • المحدد : الذي نخبر فيه قيمة العلامة التي يجب تخصيصها للمتغير.
  • المعرفات : والتي يجب أن تكون فريدة لكل محتوى.
  • العملية : التي نقوم فيها بتعيين أسماء الآلات المتغيرة والميدانية.
  • الوجهة : التي نذكر فيها اسم الكيان الذي يجب ترحيل البيانات إليه.

بناءً على بياناتك ، يمكنك الآن كتابة مكونات إضافية للترحيل أيضًا. تمت كتابة البرنامج المساعد للشفرة أعلاه لحقل field_author .

بعد ذلك ، انتقل إلى Structure ، وسترى Migration - انقر فوق ذلك. يمكنك الآن رؤية جميع مجموعات الترحيل.

أضف مجموعة الترحيل

انقر فوق قائمة الهجرة . هناك يمكنك أن ترى قائمة الهجرة yaml التي أنشأناها.

البيانات الورقية

انقر على زر التنفيذ . يمكنك رؤية خيارات الترحيل.

عملية الاستيراد

هنا يمكنك تشغيل أي خيار تريده:

  • الاستيراد: سيؤدي هذا إلى ترحيل البيانات.
  • التراجع: سيتم استرجاع جميع البيانات التي تم ترحيلها.
  • توقف: سيتم إيقاف الترحيل في منتصف العملية.
  • إعادة التعيين: سيتم تغيير الحالة إلى حالة الخمول.

يمكنك أيضًا ترحيل المحتويات من خلال الجهاز باستخدام أوامر drush هذه.

  • drush ms - حالة الترحيل
  • drush mim <migration_id> - استيراد الترحيل
  • drush mr <migration_id> - تراجع الترحيل
  • drush mrs <migration_id> - لجعل حالة الترحيل خامدة.