====== 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