J'essaie de migrer un site Drupal 7 vers un site Drupal 8. J'ai déjà créé mon module pour la migration et j'ai un type de contenu qui a un titre , field_picture et un field_text dans Drupal 7.
Je veux le migrer vers Drupal 8 où field_text = field_description et field_picture est field_image.
J'ai essayé ce qui suit:
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: {}
Je pourrais migrer la description et le titre, mais l'image n'est jamais migrée.
Qu'est-ce que je fais mal?
ÉDITER
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
Modifié ma question parce que @ Berdir dans les commentaires a dit que les images ou les fichiers doivent avoir un fichier de migration différent mais ne peuvent toujours pas migrer les images. J'ai restauré ma base de données de site D8 pour tout recommencer à zéro.
Merci pour l'aide de Berdir mais j'ai remarqué qu'il me manquait des informations sur mon fichier de migration drupal7_fruit comme les valeurs pour field_image et les dépendances de migration.
La solution de travail:
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
J'espère que cela pourra aider toute personne ayant le même problème à l'avenir!
les images et les fichiers sont leur propre type d'entité. La table des nœuds contient simplement l'ID du fichier, essentiellement une référence d'entité.
Vous avez besoin d'une migration de fichier distincte que vous devez d'abord exécuter. Vous pouvez le créer sur la base du modèle de migration d7_file.
Remarque: Si vous migrez le nid et le vid (et le fid) existants, vous devez être certain que vous n'avez aucune donnée existante avec des identifiants conflictuels sur votre site D8 ou vous obtiendrez des conflits. Vous pouvez les laisser de côté, puis il utilisera automatiquement les identifiants d'incrémentation automatique comme lorsque vous créez du contenu manuellement. Mais vous devez ensuite configurer un plug-in de processus de migration pour mapper l'ancien au nouvel identifiant de fichier.