Cara Memigrasikan Konten dari file XML ke Drupal 8 (atau 9)
Diterbitkan: 2021-10-05Menarik data dari berbagai sumber ke Drupal CMS Anda adalah inti dari migrasi. Sumber migrasi Anda bisa apa saja – database, file CMS, CSV, XML lainnya. Drupal selalu memberi Anda fleksibilitas untuk memigrasikan data dari mana saja ke dalam CMS. Kami telah banyak menulis tentang migrasi Drupal sebelumnya seperti migrasi dari sumber database, migrasi konten multibahasa dari CSV, dari sumber SQL, panduan lengkap tentang migrasi dan banyak lagi! Jika Anda mencari panduan untuk memigrasi data dari file XML ke Drupal 8 atau Drupal 9, Anda telah tiba di tempat yang tepat karena itulah yang akan kita bahas di sini!
Jika Anda ingin mengimpor feed eksternal ke situs web Drupal 9 Anda menggunakan modul Drupal Feeds, lihat artikel ini.

Modul Migrasi Drupal 8/9
Di sini, kita akan menggunakan seluruh rangkaian modul migrasi Drupal
- Migrasi
- Migrasi Drupal
- Migrasi Plus
- Alat Migrasi
Setelah menginstal modul-modul ini, Anda perlu membuat modul khusus tempat Anda akan menulis skrip untuk migrasi. Jadi pertama-tama, buat modul khusus, lalu buat info.yml yang akan menyertakan detail modul. Selanjutnya, aktifkan modul.
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
Setelah file info.yml dibuat, Anda perlu membuat grup migrasi untuk migrasi ini. Anda harus membuat grup migrasi ini di jalur: test_migration> config > install . Detail berikut diperlukan saat menjalankan migrasi:
id: test_migration label: test Migration description: Migrating xml data
Setelah membuat grup migrasi, instal grup ini di file info.yml Anda.
config_devel: install: - migrate_plus.migration_group.test_migration
Sekarang, Anda perlu menulis skrip migrasi untuk tipe konten. Skrip ini harus berada di dalam config > install dan nama file harus migration_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 : { }


- id : Akan menjadi unik untuk setiap file yaml dan ditampilkan dalam daftar migrasi.
- label : Akan berisi deskripsi untuk migrasi.
- migration_group : Ini adalah grup utama yang berisi semua migrasi.
- source : Will berisi semua detail sumber untuk migrasi ini.
- urls : Akan berisi file untuk migrasi. Dalam kode di atas, sumber ditempatkan di dalam direktori pribadi.
- item_selector : Pemilih item adalah jalur dari mana seluruh kumpulan data diambil. Pada dasarnya di dalam tag ini harus ada satu set data.
- field : Di sini kita memberikan nilai tag ke beberapa variabel.
- name : Yang memberikan nama variabel.
- label : Deskripsi singkat.
- selector : Di mana kita memberi tahu nilai tag mana yang harus ditetapkan ke variabel.
- id : Yang harus unik untuk setiap konten.
- proses : Di mana kami memetakan variabel dan nama mesin bidang.
- tujuan : Di mana kami menyebutkan nama entitas ke mana data harus dimigrasikan.
Berdasarkan data Anda, Anda sekarang dapat menulis plugin untuk migrasi juga. Plugin kode di atas ditulis untuk bidang field_author .
Setelah ini pergi ke Struktur , di sana Anda akan melihat Migrasi - klik itu. Anda sekarang dapat melihat semua grup migrasi.

Klik Daftar migrasi . Di sana Anda dapat melihat daftar migrasi yaml yang telah kami buat.

Klik pada tombol Jalankan . Anda dapat melihat opsi migrasi.

Di sini Anda dapat menjalankan opsi apa pun yang Anda inginkan:
- Impor: Ini akan memigrasikan data.
- Rollback: Akan mengembalikan semua data yang dimigrasikan.
- Stop: Akan menghentikan migrasi di tengah proses.
- Reset: Akan mengubah status ke status idle.
Anda juga dapat memigrasikan konten melalui terminal dengan perintah drush ini.
- drush ms - Status migrasi
- drush mim <migration_id> - Impor migrasi
- drush mr <migration_id> - Pengembalian migrasi
- drush mrs <migration_id> - Untuk membuat status migrasi menganggur.