Cum să migrați conținutul din fișierele XML la Drupal 8 (sau 9)
Publicat: 2021-10-05Atragerea datelor din diferite surse în CMS-ul dvs. Drupal este ceea ce înseamnă migrarea. Sursa dvs. de migrare poate fi orice - o bază de date, alte fișiere CMS, CSV, XML. Drupal vă oferă întotdeauna flexibilitatea de a migra datele de oriunde în CMS. Am scris pe larg despre migrațiile Drupal înainte, cum ar fi migrarea dintr-o sursă de bază de date, migrarea conținutului multilingv din CSV, dintr-o sursă SQL, un ghid complet despre migrare și multe altele! Dacă sunteți în căutarea unui ghid pentru migrarea datelor din fișiere XML la Drupal 8 sau Drupal 9, ați ajuns la locul potrivit, deoarece despre asta vom discuta aici!
Dacă doriți să importați fluxuri externe pe site-ul dvs. Drupal 9 folosind modulul Drupal Feeds, consultați acest articol.

Module de migrare Drupal 8/9
Aici, vom folosi întregul set de module de migrare Drupal
- Migra
- Migrați Drupal
- Migrare Plus
- Instrumente de migrare
După instalarea acestor module, va trebui să creați un modul personalizat în care veți scrie scriptul pentru migrare. Deci, mai întâi, creați un modul personalizat și apoi creați un info.yml care va include detaliile modulului. Apoi, activați modulul.
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
Odată ce fișierul info.yml este creat, trebuie să creați un grup de migrare pentru această migrare. Va trebui să creați acest grup de migrare în calea: test_migration> config> install . Aceste detalii sunt necesare în timpul executării migrării:
id: test_migration label: test Migration description: Migrating xml data
După crearea grupului de migrare, instalați acest grup în fișierul info.yml.
config_devel: install: - migrate_plus.migration_group.test_migration
Acum, trebuie să scrieți un script de migrare pentru tipul de conținut. Acest script ar trebui să fie în config > install și numele fișierului ar trebui să fie 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 : { }


- id : va fi unic pentru fiecare fișier yaml și va fi afișat în lista de migrare.
- etichetă : va conține descrierea migrației.
- migration_group : Acesta este grupul principal care conține toate migrațiile.
- sursă : Will conține toate detaliile sursei pentru această migrare.
- urls : va conține fișierul pentru migrare. În codul de mai sus, sursa este plasată în directorul privat.
- item_selector : element selector este calea din care este preluat întregul set de date. Practic, în interiorul acestei etichete ar trebui să existe un set de date.
- câmpuri : Aici atribuim valori de etichetă unor variabile.
- nume : care dă nume de variabile.
- etichetă : O scurtă descriere.
- selector : în care spunem ce valoare a etichetei ar trebui să fie atribuită variabilei.
- ID-uri : care ar trebui să fie unice pentru fiecare conținut.
- proces : în care mapăm numele variabilelor și ale mașinilor de câmp.
- destinație : în care menționăm numele entității către care ar trebui migrate datele.
Pe baza datelor tale, acum poți scrie și pluginuri pentru migrare. Pluginul de cod de mai sus este scris pentru câmpul field_author .
După aceasta, accesați Structura , acolo veți vedea Migrare - faceți clic pe aceasta. Acum puteți vedea toate grupurile de migrare.

Faceți clic pe Migrare listă . Acolo puteți vedea lista de migrare Yaml pe care am creat-o.

Faceți clic pe butonul Execute . Puteți vedea opțiunile de migrare.

Aici puteți rula orice opțiune doriți:
- Import: Aceasta va migra datele.
- Rollback: va derula înapoi toate datele migrate.
- Oprire: va opri migrarea la mijlocul procesului.
- Resetare: va schimba starea într-o stare inactiv.
De asemenea, puteți migra conținutul prin terminal cu aceste comenzi drush.
- drush ms - Starea migrației
- drush mim <migration_id> - Import de migrare
- drush mr <migration_id> - Retragerea migrației
- drush mrs <migration_id> - Pentru a face starea migrației inactivă.