====== Migration de contenu vers Drupal ====== Cours: [[https://understanddrupal.com/courses/31-days-of-migrations/]] ===== Écrire un module de migration ===== |-- modules | `-- custom | `-- mes_migrations | |-- migrations | | `-- mig_test_1.yml | `-- mes_migrations.info.yml **modules/custom/mes_migrations/mes_migrations.info.yml** name: Mes Migrations type: module package: Custom description: Premier test de migration core_version_requirement: ^10 dependencies: - drupal:migrate **modules/custom/mes_migrations/migrations/mig_test_1.yml** id: mig_test_1 label: Migration Test 1 source: plugin: embedded_data data_rows: - unique_id: 1 creative_title: 'Page importée #1' engaging_content: 'Texte de la page importée #1' - unique_id: 2 creative_title: 'Page importée #2' engaging_content: 'Texte de la page importée #2' - unique_id: 3 creative_title: 'Page importée #3' engaging_content: 'Texte de la page importée #3' ids: unique_id: type: integer process: title: creative_title body: engaging_content destination: plugin: 'entity:node' default_bundle: page ===== Exécution ===== Activer ce module (**Migrate** sera également activé s'il ne l'est pas déjà). Voir le status des migrations : vendor/bin/drush migrate:status Exécuter une migration (ou plusieurs) : vendor/bin/drush migrate:import mig_test_1 ===== Process ===== Si aucun plugin n'est défini, c'est le plugin **get** qui est utilisé par défaut : process: title: creative_title body: engaging_content Plugin **get** : source: ... process: title: plugin: get source: creative_title body: plugin: get source: engaging_content Plugin **default_value** : process: type: plugin: default_value default_value: page destination: plugin: 'entity:node' # plus besoin de spécifier la propriété "default_bundle" puisqu'on # a défini une valeur pour le champ "type". Plugin **concat** : source: plugin: embedded_data data_rows: - unique_id: 1 first_name: 'Marc' last_name: 'Lebrun' process: title: plugin: concat source: - first_name - last_name delimiter: ' ' Plugin **callback** : process: title: plugin: callback source: first_name callable: ucwords # callable est une fonction PHP Chaînage de plugins : process: title: - plugin: concat source: - first_name - last_name delimiter: ' ' - plugin: callback callable: ucwords # le paramètre "source" du plugin callback n'est pas nécessaire # lorsqu'il fait partie d'une chaîne de plugins