Tôi đang sử dụng mô-đun Di chuyển cho việc di chuyển D7 sang D8 và tôi đang viết toàn bộ quá trình di chuyển theo mã (thay vì sử dụng mô-đun di chuyển D7 tích hợp, vì tôi muốn kiểm soát chi tiết hơn khi di chuyển.)
Tôi có cấu trúc như sau: trang web D7 có trường hình ảnh nơi hình ảnh được lưu trữ dưới dạng thực thể Tệp. Trên trang D8, trường hình ảnh là tham chiếu thực thể đến thực thể Phương tiện (và thực thể Phương tiện lần lượt có trường Hình ảnh.)
Ban đầu, tôi đã có những điều sau đây cho việc di chuyển Hình ảnh của mình:
id: image_files
source:
plugin: legacy_images
constants:
source_base_path: http://example.com/
destination:
plugin: 'entity:file'
process:
fid: fid
filename: filename
source_full_path:
-
plugin: concat
delimiter: /
source:
- constants/source_base_path
- uri
-
plugin: urlencode
uri:
plugin: file_copy
source:
- '@source_full_path'
- uri
filemime: filemime
status: status
Trong tập tin di chuyển nút bài viết của tôi, tôi đã có những điều sau đây:
'field_article_image/target_id':
plugin: migration
migration: image_files
source: field_article_image
nhưng tôi nhận ra rằng điều này sẽ không hoạt động. Target_id đến từ quá trình di chuyển image_files thực sự là ID thực thể tệp chứ không phải ID thực thể phương tiện. Trong thế giới lý tưởng, tôi muốn tìm cách tạo di chuyển thứ ba, bước này sẽ tạo bước giữa này và di chuyển các thực thể tệp vào Thực thể truyền thông và sau đó ánh xạ di chuyển sang di chuyển Bài viết. Tuy nhiên, tôi không thể tìm ra một cách tốt để làm điều này.
Kế hoạch B đơn giản sẽ là tạo một plugin quy trình cho việc di chuyển hình ảnh, nó sẽ tự tạo các thực thể tệp, đính kèm chúng vào các thực thể phương tiện và chuyển việc di chuyển đó sang Bài viết (việc này sẽ loại bỏ bước giữa). Tuy nhiên, điều này có nghĩa là trong khi các thực thể Media có thể được khôi phục, thì các Thực thể Tệp không thể.