İçeriği XML dosyalarından Drupal 8'e (veya 9) Taşıma

Yayınlanan: 2021-10-05

Farklı kaynaklardan Drupal CMS'nize veri çekmek, geçişin amacıdır. Taşıma kaynağınız herhangi bir şey olabilir - bir veritabanı, başka bir CMS, CSV, XML dosyaları. Drupal size her zaman herhangi bir yerden CMS'ye veri taşıma esnekliği sağlar. Bir veritabanı kaynağından geçiş yapmak, çok dilli içeriği CSV'den, bir SQL kaynağından taşımak, geçişler için eksiksiz bir nasıl yapılır kılavuzu ve daha fazlası gibi daha önce Drupal geçişleri hakkında kapsamlı bir şekilde yazdık! XML dosyalarından Drupal 8 veya Drupal 9'a veri taşımak için bir rehber arıyorsanız, burada tartışacağımız şey olduğundan doğru yere geldiniz!

Drupal Beslemeler modülünü kullanarak dış beslemeleri Drupal 9 web sitenize aktarmak istiyorsanız bu makaleye göz atın.

XML'den Drupal'a Geçiş

Drupal 8/9 Geçiş Modülleri

Burada, tüm Drupal geçiş modüllerini kullanacağız

  • Göç
  • Drupal'ı Taşı
  • Artı Taşı
  • Araçları Taşıma

Bu modülleri kurduktan sonra, geçiş için betiği yazacağınız özel bir modül oluşturmanız gerekecektir. Bu nedenle, önce özel bir modül oluşturun ve ardından modülün ayrıntılarını içerecek bir info.yml oluşturun. Ardından, modülü etkinleştirin.

 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 dosyası oluşturulduktan sonra bu taşıma için bir taşıma grubu oluşturmanız gerekir. Bu taşıma grubunu şu yolda oluşturmanız gerekecek: test_migration> config > install . Taşıma işlemi yürütülürken bu ayrıntılara ihtiyaç vardır:

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

Taşıma grubunu oluşturduktan sonra bu grubu info.yml dosyanıza kurun.

 config_devel: install: - migrate_plus.migration_group.test_migration

Şimdi, içerik türü için bir geçiş komut dosyası yazmanız gerekiyor. Bu betik config > install içinde olmalı ve dosya adı migration_plus.migration.test_migration_paper.yml olmalıdır

 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 : { }
Reklam Etiketi

  • id : Her yaml dosyası için benzersiz olacak ve geçiş listesinde görüntülenecektir.
  • etiket : Taşıma için açıklama içerecektir.
  • Migration_group : Bu, tüm taşımaları içeren ana gruptur.
  • source : Will, bu geçiş için tüm kaynak ayrıntılarını içerir.
  • urls : Taşıma için dosyayı içerecektir. Yukarıdaki kodda, kaynak özel dizine yerleştirilir.
  • item_selector : Öğe seçici, tüm veri kümesinin alındığı yoldur. Temel olarak bu etiketin içinde bir veri seti olmalıdır.
  • alanlar : Burada bazı değişkenlere etiket değerleri atıyoruz.
  • name : Değişken isimleri veren.
  • etiket : Kısa bir açıklama.
  • seçici : İçinde değişkene hangi etiket değerinin atanması gerektiğini söylüyoruz.
  • ids : Her içerik için benzersiz olması gereken.
  • process : Değişken ve alan makine adlarını eşlediğimiz yer.
  • hedef : Verilerin taşınması gereken varlık adından bahsettiğimiz yer.

Verilerinize dayanarak artık geçiş için eklentiler de yazabilirsiniz. Yukarıdaki kod eklentisi field_author alanı için yazılmıştır.

Bundan sonra Structure 'a gidin, orada Migration'ı göreceksiniz - buna tıklayın. Artık tüm taşıma gruplarını görebilirsiniz.

Taşıma Grubu Ekle

Liste taşıma 'yı tıklayın. Orada oluşturduğumuz migrasyon yaml listesini görebilirsiniz.

Kağıt Verileri

Yürüt düğmesine tıklayın. Taşıma seçeneklerini görebilirsiniz.

İthalat İşlemi

Burada istediğiniz herhangi bir seçeneği çalıştırabilirsiniz:

  • İçe Aktar: Bu, verileri taşır.
  • Geri Alma: Taşınan tüm verileri geri alır.
  • Durdur: İşlemin ortasında taşımayı durdurur.
  • Sıfırla: Durumu boşta durumuna değiştirir.

Ayrıca bu drush komutlarıyla içeriği terminalden geçirebilirsiniz.

  • drush ms - Taşıma durumu
  • drush mim <migration_id> - Taşıma içe aktarma
  • drush mr <migration_id> - Taşımayı geri alma
  • drush mrs <migration_id> - Taşıma durumunu boşta yapmak için.