Apa solusi terbaik untuk mengimpor file CSV ke node atau entitas di Drupal 8 yang menawarkan UI sehingga editor konten dapat mengimpor secara teratur?
Saya pernah mendengar D8 Migrate berfungsi dengan baik tetapi saya mengerti saat ini tidak ada UI untuk proses impor.
Impor CSV melalui Umpan tampaknya belum siap.
8
migration
feeds
importing-exporting
Scott Anderson
sumber
sumber
Jawaban:
Saya melakukan ini sepanjang waktu, memanfaatkan entitas konfigurasi migrasi (disediakan oleh modul migrate_plus ). Tetapkan plugin migrasi di direktori config / install modul migrasi Anda, menggunakan plugin CSV source dari modul migrate_source_csv - menghilangkan konfigurasi sumber 'path', yang akan diisi dari form. Katakanlah ID migrasi ini adalah example_csv. Buat formulir dengan elemen unggah file (bernama 'csv_file' dalam kasus ini), dan dalam metode submitForm ():
Ini memperbarui pengaturan migrasi dengan file baru. Anda masih harus menjalankan migrasi menggunakan
drush mi example_csv
untuk benar-benar mengimpor konten.Atau tambahkan beberapa kode ke fungsi untuk benar-benar menjalankan impor:
sumber
Mungkin lebih baik dan lebih cepat untuk menggunakan Feed , tetapi karena versi D8 masih dalam pengembangan; sebagai alternatif, Anda bisa menggunakan Excel + VBA ( Visual Basic for Applications , hadir dengan Excel) + Internet Explorer 11.
Berikut ini contoh bagaimana Anda dapat mengimpor konten CSV Anda menggunakan VBA.
Misalnya, mari kita asumsikan Anda ingin mengimpor ini dan membuat node baru dengan info dari CSV Anda:
Berikut ini contoh kode VBA:
Pastikan Anda mengubah nama domain
myURL = "https://rgr79.ply.st/node/add/article"
sesuai dengan domain Anda. Saya menggunakan domain simplytest.me , jika Anda belum tahu.Bagaimana cara menambahkan kode VBA?
Klik pada tab Pengembang dan kemudian pada ikon Visual Basic (atau ALT + F11)
dan rekatkan kode di dalam Sheet1 (Sheet1)
Sekarang di bilah alat, klik
tool
dan kemudianReferences
Anda perlu menggulir, menemukan, dan menandai
Catatan: Saya tahu ini bekerja dengan Internet Explorer 11, tidak yakin apakah itu bekerja dengan browser Microsoft Edge yang baru.
Sekarang Anda siap menjalankan skrip. Anda dapat melakukannya dengan mengeklik tombol Mainkan
Anda juga dapat menjalankannya dengan mengklik Ikon Makro (lihat image2), tetapi saya lebih suka melakukannya dari jendela VBA.
Jadi Anda menekan tombol play dan jendela IE secara otomatis terbuka dan Anda melihat ini:
Oh ya, Anda lupa masuk, lol.
Jadi Anda melanjutkan untuk masuk ke Drupal dan kemudian Anda menutup explorer (karena riwayat cookie menyimpan login Anda) dan berencana untuk menekan tombol play lagi. Tetapi Anda tidak dapat ... Anda melihat tombol putar abu-abu dan tidak dapat membuat perubahan pada kode VBA ... Apa yang terjadi?
Nah kode Anda masih berjalan, jadi Anda harus menekan tombol Stop (reset).
Sekarang Anda dapat mengklik tombol putar lagi dan bersuka ria dunia otomatisasi.
Penting
Jika Anda berencana untuk memasukkan hal-hal ke bidang Tubuh (seperti yang kami lakukan dalam contoh ini), karena Drupal 8 menggunakan CKEditor untuk bidang ini dan CKEditor adalah JS, kami tidak dapat menargetkan kelas div atau ID; dengan demikian, kami tidak dapat menambahkan konten di dalam CKEditor.
Untungnya, ada pekerjaan di sekitar. Pastikan pengaturan Keamanan IE 11 Anda diatur ke Tinggi, ini secara otomatis akan memblokir semua JS. Oleh karena itu, CKeditor tidak akan memuat, dan bidang tubuh akan sama seperti bidang lainnya.
Jika Anda perlu mengedit node misalnya:
sumber
Di atas berfungsi dengan baik bagi saya tetapi
Migratin::Load()
dansave()
metode tidak tersedia di Drupal 8 3.x. Saya telah melakukan beberapa perubahan di atas @Mike Ryan kode yang disarankan. Berikut adalah kode kerja pada formulir sumbit handler.sumber
Sekarang Anda dapat menggunakan modul Impor Konten ( https://www.drupal.org/project/contentimport ). Inilah pos tentang cara menggunakannya: https://www.ostraining.com/blog/drupal/content-import-module/
sumber