it-swarm.com.de

Bilder und Dateien migrieren

Ich versuche, eine Drupal 7-Site auf eine Drupal 8-Site) zu migrieren. Ich habe mein Modul für die Migration bereits erstellt und habe einen Inhaltstyp mit einem Titel , field_picture und ein field_text in Drupal 7.

Ich möchte es nach Drupal 8 migrieren, wobei field_text = field_description und field_picture field_image ist.

Ich habe folgendes versucht:

id: drupal7_fruit
label: "Test migration"
migration_group: drupal7
source:
  plugin: d7_node
  node_type: fruit
process:
  nid: nid
  vid: vid
  langcode:
    plugin: default_value
    source: language
    default_value: und
  title: title
  uid: node_uid
  status: status
  created: created
  changed: changed
  promote: promote
  sticky: sticky
  revision_uid: revision_uid
  revision_log: log
  revision_timestamp: timestamp
  field_description: field_text
  field_image:
    plugin: iterator
    source: field_picture
    process:
      target_id: fid
      alt: alt
      title: title
      width: width
      height: height
destination:
  plugin: 'entity:node'
  default_bundle: fruit
migration_dependencies: {}

Ich könnte Beschreibung und Titel migrieren, aber das Bild wird nie migriert.

Was mache ich falsch?

BEARBEITEN

migrate_plus.migration.drupal7_fruit.yml

    id: drupal7_fruit
label: "Migrate Fruit Content Type"
migration_group: drupal7
source:
  plugin: d7_node
  node_type: fruit
process:
  nid: nid
  vid: vid
  langcode:
    plugin: default_value
    source: language
    default_value: und
  title: title
  uid: node_uid
  status: status
  created: created
  changed: changed
  promote: promote
  sticky: sticky
  revision_uid: revision_uid
  revision_log: log
  revision_timestamp: timestamp
  field_descricao: field_body
destination:
  plugin: 'entity:node'
  default_bundle: fruit
  migration_dependencies:
    optional: drupal7_image

migrate_plus.migration.drupal7_image.yml

 id: drupal7_image
label: Images
migration_tags:
  - Drupal 7
source:
  plugin: d7_file
  constants:
    source_base_path: ''
process:
  fid: fid
  filename: filename
  source_full_path:
    -
      plugin: concat
      delimiter: /
      source:
        - constants/source_base_path
        - filepath
    -
      plugin: urlencode
  uri:
    plugin: file_copy
    source:
      - '@source_full_path'
      - uri
  filemime: filemime
  status: status
  created: timestamp
  changed: timestamp
  uid: uid
destination:
  plugin: entity:file

Ich habe meine Frage bearbeitet, weil @ Berdir in den Kommentaren angegeben hat, dass Bilder oder Dateien eine andere Migrationsdatei haben müssen, aber dennoch keine Bilder migrieren können. Ich habe meine D8-Site-Datenbank wiederhergestellt, um alles von vorne zu beginnen.

6
Henrique Alho

Vielen Dank für Berdirs Hilfe, aber ich habe festgestellt, dass mir einige Informationen in meiner Migrationsdatei drupal7_fruit fehlten, z. B. die Werte für field_image und Migrationsabhängigkeiten.

Die Arbeitslösung:

migrate_plus.migration.drupal7_image.yml

id: drupal7_image
label: Images
migration_group: drupal7
migration_tags:
  - Drupal 7
source:
  plugin: d7_file
  constants:
    source_base_path: '/var/www/username/drupal7/' # Full location of your drupal7 site
process:
  fid: fid
  filename: filename
  source_full_path:
    -
      plugin: concat
      delimiter: /
      source:
        - constants/source_base_path
        - filepath
    -
      plugin: urlencode
  uri:
    plugin: file_copy
    source:
      - '@source_full_path'
      - uri
  filemime: filemime
  status: status
  created: timestamp
  changed: timestamp
  uid: uid
destination:
  plugin: entity:file
migration_dependencies: {}

migration_plus.migration.drupal7_fruit.yml

id: drupal7_fruta
label: "Migrate Fruit Content Type"
migration_group: drupal7
migration_tags:
  - Drupal 7
source:
  plugin: d7_node
  node_type: fruit
process:
  nid: nid
  vid: vid
  langcode:
    plugin: default_value
    source: language
    default_value: und
  title: title
  uid: node_uid
  status: status
  created: created
  changed: changed
  promote: promote
  sticky: sticky
  revision_uid: revision_uid
  revision_log: log
  revision_timestamp: timestamp
  field_description: field_body
  field_image: # Image field name in Drupal 8 site
    plugin: iterator
    source: field_photo # Image field name in Drupal 7 site
    process:
      target_id: fid
      alt: alt
      title: title
      width: width
      height: height
destination:
  plugin: 'entity:node'
  default_bundle: fruit    

migration_dependencies:
  required: 
    - drupal7_image

Hoffe, dies kann in Zukunft jedem helfen, der das gleiche Problem hat!

8
Henrique Alho

bilder und Dateien sind ihre eigenen Entitätstypen. Die Knotentabelle enthält nur die Datei-ID, im Grunde eine Entitätsreferenz.

Sie benötigen eine separate Dateimigration, die Sie zuerst ausführen müssen. Sie können es basierend auf der Migrationsvorlage d7_file erstellen.

Hinweis: Wenn Sie die vorhandene nid und vid (und fid) migrieren, müssen Sie sicherstellen, dass auf Ihrer D8-Site keine Daten mit widersprüchlichen IDs vorhanden sind, da sonst Konflikte auftreten. Sie können diese weglassen, dann werden automatisch automatisch inkrementierende IDs verwendet, genau wie beim manuellen Erstellen von Inhalten. Dann müssen Sie jedoch ein Migrationsprozess-Plugin einrichten, um die alte der neuen Datei-ID zuzuordnen.

5
Berdir