Điểm:1

Nhập nội dung trong các nút có trường phương tiện: hình ảnh bằng cách sử dụng Di chuyển từ nguồn csv

lá cờ mx

Tôi cố gắng nhập nội dung từ một .csv tập tin vào mạo từ các nút của bản cài đặt D9 mới bằng cách sử dụng Di chuyển, Di chuyển cộng, Di chuyển công cụ, Di chuyển nguồn csvDi chuyển tệp (mở rộng)

Của tôi mạo từ loại nội dung có một field_article_media_image mong đợi một mục hình ảnh phương tiện truyền thông.

Khi tôi chạy quá trình di chuyển, bài viết được tạo ra một cách chính xác NHƯNG field_article_media_image vẫn còn trống. Tôi thấy hình ảnh đã được nhập vào hệ thống tệp, nhưng được tạo dưới dạng tệp chứ không phải dưới dạng mục phương tiện (không có trong tab phương tiện) và nó không được liên kết với bài viết.

//nhập-articles.yml

id: import_articles
nhãn: Bài viết nhập khẩu
nhóm di chuyển: nhập_articles_group

điểm đến:
  plugin: thực thể: nút

nguồn:
  hằng số:
    DESTINATION_PATH: 'public://migrations/articles/images/'
  plugin: 'csv'
  đường dẫn: 'di chuyển/bài viết/bài viết.csv'
  dấu phân cách: ';'
  bao vây: '"'
  tiêu đề_offset: 0
  id:
    - Tôi
  lĩnh vực:
    0:
      tên: id
      nhãn: 'Id'
    1:
      tên: tiêu đề
      nhãn: 'Tiêu đề'
    2:
      tên: cơ thể
      nhãn: 'Cơ thể'
    3:
      tên: field_article_media_image
      nhãn: 'Hình ảnh'
tiến trình:
  tiêu đề: tiêu đề
  cơ thể/giá trị: cơ thể
  cơ thể/định dạng:
    plugin: default_value
    default_value: 'cơ bản_html'
  field_article_media_image:
    - plugin: image_import
      nguồn: field_article_media_image
      đích: hằng số/DESTINATION_PATH
      tiêu đề: tiêu đề
      bỏ qua_on_error: đúng
    - plugin: nhật ký
  loại:
    plugin: default_value
    default_value: bài viết

Nhật ký không có lỗi. Tôi đang thiếu một cái gì đó hoặc tôi đang làm điều gì đó sai?

CHỈNH SỬA

Sau những gì @Joseph nhận xét, tôi đã thử mã này:

...
    field_article_media_image:
        nguồn: field_article_media_image
        plugin: thực thể_lookup
        entity_type: phương tiện
        bó: hình ảnh
        bundle_key: gói
        value_key: 'tên'
        truy cập_kiểm tra: 0
...

Mọi thứ đang hoạt động, tôi nghĩ value_key báo giá cần thiết, và có lẽ truy cập_kiểm tra phải được đặt thành sai.

Điểm:0
lá cờ in

Làm thế nào bài viết của bạn có liên quan đến hình ảnh thực sự là như thế này:

Bài viết (node) -> Hình ảnh (media) -> Tệp (file)

Vì vậy, thực sự có số ba di chuyển bạn phải thực hiện, giả sử bạn không làm gì đặc biệt và chỉ thực hiện di chuyển vanilla.

  • Lần di chuyển đầu tiên sẽ là một Tập tin thực thể. Đích đến của cuộc di cư này là thực thể: tập tin sẽ di chuyển thông tin đến file_managed cái bàn. Đây là thứ di chuyển siêu dữ liệu tệp, chẳng hạn như vị trí của siêu dữ liệu trong hệ thống tệp, thời điểm thay đổi, thời điểm sửa đổi, v.v.

  • Lần di cư thứ hai sẽ đến một Phương tiện truyền thông thực thể. Đích đến của cuộc di cư này là thực thể: phương tiện truyền thông với bó hình ảnh, sẽ tạo một thực thể phương tiện của tệp. Quá trình di chuyển này thường là 1:1 với tệp mà nó đại diện. Đây là thực thể nên được liên kết bởi các thực thể khác trong hệ thống. bạn làm một di chuyển_lookup trên Tập tin di chuyển bằng ID của tệp đó.

    • Tôi tin rằng đây là lần di chuyển mà bạn đang thiếu.
  • Lần di chuyển cuối cùng sẽ là của bạn Mạo từ di chuyển, là dữ liệu bài viết từ CSV của bạn (di chuyển mà bạn đã viết). Bạn sẽ cần phải làm một di chuyển_lookup về di chuyển phương tiện bằng cách sử dụng ID của tệp cho field_article_media_image.

lá cờ mx
Trong thời gian chờ đợi, tôi đã quản lý để nhập hình ảnh dưới dạng thực thể Phương tiện (sử dụng drupal/media_library_importer). Tôi có thể chuyển trực tiếp đến lần di chuyển cuối cùng không? Tiêu đề cho mục Phương tiện là một khóa duy nhất tôi có trong .csv của mình
lá cờ in
@laurent Nếu bạn đã sử dụng các công cụ khác ngoài API di chuyển để di chuyển Phương tiện, thì quá trình di chuyển bài viết của bạn không thể sử dụng [`migration_lookup`](https://api.drupal.org/api/drupal/core!modules!migrate!src!Plugin! migration!process!MigrationLookup.php/class/MigrationLookup) plugin để liên kết bài viết với phương tiện.Tuy nhiên, bạn có thể tạo một [plugin quy trình](https://www.drupal.org/docs/8/api/migrate-api/migrate-process/writing-a-process-plugin) và sử dụng cột đó trong CSV của mình để tìm thực thể phương tiện chính xác trong DB bằng cách sử dụng [API thực thể](https://www.drupal.org/docs/drupal-apis/entity-api/introduction-to-entity-api-in-drupal-8).
lá cờ mx
Trong Migrate Plus, plugin `entity_lookup` dường như đang làm đúng những gì tôi muốn, ví dụ được cung cấp là các nút _hooking_ cho các thực thể người dùng, tôi không biết cách chuyển đổi sang các thực thể phương tiện, nhưng điều đó nghe có vẻ không quá phức tạp . Tôi mới sử dụng Drupal, vì vậy nếu tôi có thể tránh viết plugin...
lá cờ in
@laurent `entity_lookup` có thể làm những gì tôi đã mô tả. Bạn chỉ cần cấu hình để nó trỏ về đúng `entity_type`("media"), `bundle`("image"), `bundle_key`("bundle") và quan trọng nhất là `value_key` - tên máy của trường trong thực thể phương tiện của bạn chứa giá trị trùng với giá trị trong CSV bài viết của bạn.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.