Jak przenieść zawartość z plików XML do Drupala 8 (lub 9)

Opublikowany: 2021-10-05

Migracja polega na pobieraniu danych z różnych źródeł do systemu Drupal CMS. Twoim źródłem migracji może być wszystko – baza danych, inny CMS, CSV, pliki XML. Drupal zawsze zapewnia elastyczność migracji danych z dowolnego miejsca do systemu CMS. Wcześniej pisaliśmy dużo o migracjach Drupala, takich jak migracja ze źródła bazy danych, migracja treści wielojęzycznych z CSV, ze źródła SQL, kompletny przewodnik po migracjach i nie tylko! Jeśli szukasz przewodnika po migracji danych z plików XML do Drupala 8 lub Drupala 9, to dobrze trafiłeś, bo o tym będziemy tutaj dyskutować!

Jeśli chcesz zaimportować zewnętrzne kanały do ​​swojej witryny Drupal 9 za pomocą modułu Drupal Feeds, zapoznaj się z tym artykułem.

Migracja XML do Drupala

Moduły migracji do Drupala 8/9

Tutaj będziemy używać całego zestawu modułów migracji Drupala

  • Migrować
  • Migracja Drupala
  • Migracja Plus
  • Narzędzia migracji

Po zainstalowaniu tych modułów będziesz musiał stworzyć niestandardowy moduł, w którym napiszesz skrypt do migracji. Więc najpierw utwórz niestandardowy moduł, a następnie utwórz info.yml, który będzie zawierał szczegóły modułu. Następnie włącz moduł.

 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

Po utworzeniu pliku info.yml musisz utworzyć grupę migracji dla tej migracji. Musisz utworzyć tę grupę migracji w ścieżce: test_migration> config > install . Te dane są potrzebne podczas przeprowadzania migracji:

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

Po utworzeniu grupy migracji zainstaluj tę grupę w pliku info.yml.

 config_devel: install: - migrate_plus.migration_group.test_migration

Teraz musisz napisać skrypt migracji dla typu zawartości. Ten skrypt powinien znajdować się w config > install, a nazwa pliku powinna brzmieć 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 : { }
Etykieta reklamy

  • id : będzie unikalny dla każdego pliku yaml i będzie wyświetlany na liście migracji.
  • label : będzie zawierał opis migracji.
  • Migration_group : To jest główna grupa zawierająca wszystkie migracje.
  • źródło : Will zawiera wszystkie szczegóły źródła tej migracji.
  • url : będzie zawierać plik do migracji. W powyższym kodzie źródło znajduje się w prywatnym katalogu.
  • item_selector : Selektor pozycji to ścieżka, z której pobierany jest cały zestaw danych. Zasadniczo wewnątrz tego tagu powinien znajdować się jeden zestaw danych.
  • pola : tutaj przypisujemy wartości tagów do niektórych zmiennych.
  • name : Podaje nazwy zmiennych.
  • etykieta : Krótki opis.
  • selector : W którym mówimy, jaka wartość tagu powinna być przypisana do zmiennej.
  • identyfikatory : które powinny być unikalne dla każdej treści.
  • proces : w którym mapujemy nazwy zmiennych i maszyn polowych.
  • cel : W którym podajemy nazwę podmiotu, do którego dane mają zostać przeniesione.

Na podstawie swoich danych możesz teraz pisać również wtyczki do migracji. Powyższa wtyczka kodu jest napisana dla pola field_author .

Następnie przejdź do Struktury , tam zobaczysz Migrację - kliknij na to. Możesz teraz zobaczyć wszystkie grupy migracji.

Dodaj grupę migracji

Kliknij Lista migracji . Możesz tam zobaczyć listę utworzonych przez nas plików migracji.

Dane papierowe

Kliknij przycisk Wykonaj . Możesz zobaczyć opcje migracji.

Operacja importu

Tutaj możesz uruchomić dowolną opcję:

  • Importuj: spowoduje to migrację danych.
  • Wycofanie: cofnie wszystkie migrowane dane.
  • Zatrzymaj: zatrzyma migrację w trakcie procesu.
  • Reset: zmieni stan na stan bezczynności.

Możesz także migrować zawartość za pośrednictwem terminala za pomocą tych poleceń drush.

  • drrush ms - Status migracji
  • drush mim <migration_id> - import migracji
  • drush mr <migration_id> - Cofanie migracji
  • drush mrs <migration_id> — aby zmienić stan migracji na bezczynny.