Drupal 7'den 8'e Taşımak için CSV İçe Aktarma - Eksiksiz bir kılavuz
Yayınlanan: 2020-02-11Drupal 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.

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.

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 .

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.

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

Ş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.

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.


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.

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 .

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.

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.

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.

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.

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.

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.

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

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 .

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.

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.
