Drupal 7'den 8'e Taşımak için CSV İçe Aktarma - Eksiksiz bir kılavuz

Yayınlanan: 2020-02-11

Drupal 7'den 8'e geçiş sıkıcı olmaktan başka bir şey değil çünkü geçiş gerçekleştirmenin pek çok yolu var! Projenin karmaşıklığına bağlı olarak, ona en uygun tekniği seçebiliriz. Bu blogda tartışacağımız konu, bir CSV içe aktarma yöntemi kullanarak içeriği ve yapılandırmayı Drupal 7'den Drupal 8'e taşımaktır.

CSV-ithalatçı-drupal

Drupal, JSON, XML ve CSV gibi farklı kaynaklardan veri almak için çeşitli modüller sağlar. Drupal 8 çekirdek geçiş API sistemi, önceki bir Drupal sürümünden Drupal 8'e her türlü geçişi esasen işleyebilen eksiksiz bir API paketi sunar.

Drupal 7 - 8 geçişinden önce bazı hazırlık çalışmaları

CSV içe aktarmayı kullanarak Drupal 7'den Drupal 8'e geçiş yapmak için bu modüllere ihtiyacımız olacak.

Drupal 7 Modüller -

  • Görünümler Veri dışa aktarma : Bu modülün Drupal 7 sitemize yüklenmesi gerekiyor. Görünüm Verilerini dışa aktarma modülü, verilerin CSV biçiminde dışa aktarılmasına yardımcı olur.

  • Parola Alanını Görüntüleme : Bu modül, parolaları karma biçimde gönderecek parolaların taşınmasına yardımcı olur.

Drupal 8 Modül -

  • Taşıma – Drupal 8 Migrate modülü, çeşitli kaynaklardan Drupa 8'e veri alınmasına yardımcı olur.

  • Migrate Plus – Bu Drupal 8 modülü, içe aktarılan kaynak verilerin işlenmesine yardımcı olur

  • Migrate Drupal – Bu modül, içeriğin ve konfigürasyonların Drupal 8'e taşınmasında destek sunar.

  • Kaynak CSV'yi taşı – Bu modül, varlıkları ve içeriği .csv dosyalarından Drupal 8'e taşıyabilen bir kaynak eklentisi sunar.

  • Taşıma Araçları – Bu Drupal 8 modülü, geçişleri yönetmek için UI araçları/Drush komutları sunarak yardımcı olur.

  • Yapılandırma Geliştirme Modülü – Bu modül, yapılandırma dosyalarının Drupal 8'e aktarılmasına yardımcı olur.

Drupal 8 geçişi başlasın!

Öncelikle Drupal 8 geçişimiz için özel bir modül oluşturmamız gerekiyor . Bu modülü test_migrate olarak adlandıralım . Ve biz özel bir modül oluşturduktan sonra biz info.yml dosyası oluşturmak gerektiğini biliyoruz.

csv1

Yukarıdaki ekran görüntüsü, info.yml için gerekli olan anahtarları gösterir .

info.yml dosyası oluşturulduktan sonra, taşıma için bir taşıma grubu oluşturmamız gerekiyor. Bu taşıma grubunun şu yolda oluşturulması gerekir: test_migration > config > install . Grubun adımile_plus.migration_group.test_migration.yml olmalıdır .

csv2

Yukarıdaki ekran görüntüsü, bir geçiş grubu oluşturmak için klasör yapısını gösterir.

Migrate_plus.migration_group.test_migration.yml dosyası içinde biz Aşağıdaki ekran görüntüsünde gösterilen göç grubu için kimliği, etiket ve açıklama yazmak gerekir.

csv3

Migration grubunu oluşturduktan sonra info.yml dosyamıza bu grubu yüklememiz gerekiyor .

csv

Şimdi Kullanıcılar, Taksonomi terimi, Paragraflar, İçerik türleri için bir geçiş betiği yazacağız. Bu varlıklar arasında bir bağlantı olacağından, aynı sırayla geçiş yaptığınızı unutmayın. Örneğin, içerik belirli bir kullanıcı tarafından oluşturulacaktır - bu nedenle önce kullanıcıları ve ardından içerik türünü sınıflandırmamız gerekiyor.

Şimdi kullanıcı geçişi için yaml dosyasına bir komut dosyası yazalım . Bu nedenle, kullanıcı geçişi yazmak için, move_plus.migration.test_migration_users.yml isimli user yaml dosyasına ihtiyacımız var. ve geçiş için komut dosyası aşağıda gösterilmiştir.

csv5

Bunlar, taşınmamız gereken kaynak csv dosyasını buraya taşımak için gereken anahtarlardır. Csv dosyaları, varlıklar > csv > user.csv yoluna yerleştirilmelidir . Users.csv de aşağıda gösterilmiştir.

csv6

csv7

Yol - csv dosyasının yolunu gösterir.

header_row_count - Bu, belirli bir sütunun başlığı olan satır sayısını verecektir.

Anahtarlar - her satır için benzersiz olması gereken.

İşlem - Bunda, csv dosyalarını alanlara eşliyoruz.

csv8

Yukarıdaki resim, alanlar ve csv arasındaki eşlemeyi göstermektedir. Burada ad, kullanıcı adı alanının makine adıdır ve başlık, csv sütun başlığıdır. Tek bir alan için birden fazla verimiz varsa, sınırlayıcıları kullanırız. Kullanıcıların birden fazla rolü olabilir, bu durumda yukarıdaki resimde gösterildiği gibi yazıyoruz.

Görüntüler özel eklenti yazılarak taşınır. Özel eklenti, src > eklenti > taşıma > işlem yolunda yazılabilir . Yukarıdaki resimde user_image_import_process'in kullanıcı resimlerini taşımak için yazılmış özel bir eklenti olduğunu görebilirsiniz .

csv9

UserImportProcess.php içinde görüntüyü kopyalayacak ve hedefe kaydedecek işlevi yazıyoruz. Komut dosyası aşağıdaki resimde gösterilmiştir.

csv10

Görüntülerin nereye kaydedileceğini belirlemek için ImageImportprocess bir fonksiyon daha yazacağız . Bu fonksiyonda görüntünün makine adından bahsedeceğiz.

csv11

Kullanıcıların info.yml dosyasında, taşınan verilerin nerede saklanacağını ve hangisinin bir varlık olduğunu belirten bir hedef bölümü vardır. Bu, aşağıdaki resimde işaretlenmiştir.

csv12

Kullanıcılar için kod oluşturduktan sonra taksonomi terimleri için yaml yazmamız gerekiyor. Taksonominizde yalnızca başlık alanınız varsa, ayrı bir yaml dosyası yazmanız gerekmediğini unutmayın. Taksonomi teriminde birden fazla alanınız varsa, ayrı bir yaml dosyası yazmanız gerekir. Taksonomi terimlerinde, tid her terim için benzersiz olacağından anahtar olarak tid'e sahip olacağız.

csv13

Bundan sonra paragrafları taşıyacağız. Bunun için ayrı bir yaml dosyası oluşturmamız gerekiyor. Taşınacak kod aşağıdaki resimde gösterilmektedir.

csv14

Son olarak, içerik türünü taşıyalım. İçerik türü için yaml dosyası aşağıdaki kodda gösterilmiştir.

etiket : 'İçerik türü verilerini csv dosyasından taşı'

migration_group: test_migration

kaynak : id : test_migration_content

eklenti : csv

# Dosyanın tam yolu.

yol : 'modules/custom/test_migrate/assets/csv/content.csv'

header_row_count : 1

anahtarlar :

- nid

süreç :

# Alanlar ve csv sütunları arasındaki eşlemeyi ekleme.

başlık : başlık

terfi : promod_to_front_page

yapışkan : yapışkan

field_display_name : display_name

field_marketing_tagline : marketing_tagline

alan_taksonomisi :

eklenti : entity_lookup

kaynak : Taksonomi

entity_type : taksonomi_term

paket_anahtar : video

paket : taksonomi

değer_anahtar : isim

gövde/değer : gövde

gövde/biçim :

eklenti : default_value

default_value : "full_html"

alan_paragraf :

- eklenti : patlat

sınırlayıcı : "|"

kaynak : fcid

- eklenti : skip_on_empty

yöntem : süreç

- eklenti : migrasyon_lookup

taşıma : test_migration_paragraphs

no_stub : doğru

- eklenti : yineleyici

süreç :

target_id : '0'

target_revision_id : '1'

hedef :

eklenti : 'varlık: düğüm'

default_bundle : içerik

göç_bağımlılıkları :

gerekli :

- test_migration_paragraph

- test_migration_taxonomy

bağımlılıklar : { }

Tüm yaml dosyalarını yazdıktan sonra göç test_migrate.info.yml yüklemeleri altında içerecektir.

csv15

Tüm bu adımları tamamladıktan sonra sitenize gidin ve özel modülünüzü yükleyin.

csv16

Ardından, terminalde projenize gidin ve aşağıdaki resimde gösterildiği gibi geçiş durumunu kontrol etmek için bu "drush ms" komutunu çalıştırın .

csv17

Taşımak için drush mim migration-id komutunu kullanın . Yukarıdaki resimde taşıma kimliğini görebiliriz.

Bittiğinde, taşıma durumunu kontrol ederseniz, taşınan öğelerin sayısını görebilirsiniz.

csv18

Artık tüm içeriğin taşındığını gözlemleyebilirsiniz. Veri taşımada herhangi bir hata varsa, süreç o belirli durumda sona erecektir. Bu içerikle ilgili sorunu kontrol edin ve ardından taşıma işlemini yeniden başlatabilirsiniz.

Hatırlanacak şeyler

  • İşlemler arasında taşıma işlemi sonlandırılırsa, taşıma durumu "içe aktarılıyor" olarak görüntülenir. Durumu boşta olarak değiştirmek için drush mrs Migration-id komutunu çalıştırmanız gerekir . Ardından, drush mim geçiş kimliği komutunu çalıştırın

  • Taşınan içeriği geri almak istiyorsanız, drush mr move-id komutunu çalıştırın.

  • Geçiş işlemini başlattıktan sonra koddaki herhangi bir şeyi değiştirdiyseniz, drush cdi test_migration komutunu çalıştırdığınızdan emin olun . Bu komut, geçiş sırasında değişiklikleri yansıtmanıza yardımcı olacaktır. Tamamlandığında, tüm içeriğin taşınıp taşınmadığını görmek için sitenizde kapsamlı bir kontrol yapın.