logo

Types de blocs supplémentaires (EBT) – Nouvelle expérience de Layout Builder❗

Types de blocs supplémentaires (EBT) – types de blocs stylisés et personnalisables : diaporamas, onglets, cartes, accordéons et bien d’autres. Paramètres intégrés pour l’arrière-plan, la boîte DOM, les plugins JavaScript. Découvrez dès aujourd’hui le futur de la création de mises en page.

Démo des modules EBT Télécharger les modules EBT

❗Types de paragraphes supplémentaires (EPT) – Nouvelle expérience Paragraphes

Types de paragraphes supplémentaires (EPT) – ensemble de modules basé sur les paragraphes analogiques.

Démo des modules EPT Télécharger les modules EPT

Défilement

Configuration de la migration lors de la mise à niveau vers Drupal 8

05/07/2025, by Ivan

Créez vos migrations initiales

  • Créez les migrations en utilisant drush migrate-upgrade --configure-only, comme décrit dans la section « Mise à niveau avec Drush ».
  • Assurez-vous de disposer d’un aconfig/syncdirectory dans lequel sera enregistré l’étape suivante.
  • Exportez les migrations en utilisant drush config:export.
  • Créez votre propre module de migration personnalisé.
  • Copiez uniquement les fichiers YML que vous souhaitez utiliser depuis le répertoire config/sync vers le répertoire config/install de votre nouveau module personnalisé, en les éditant pour supprimer les valeurs uuid et modifier l’identifiant, le groupe, le label et d’autres valeurs selon vos besoins.
  • Copiez le fichier de groupe migrate_plus.migration_group.migrate_drupal_7.yml depuis config/sync vers le répertoire config/install de votre nouveau module personnalisé, en le renommant en migrate_plus.migration_group.your_module.yml. Vous aurez besoin du fichier de groupe car il contient les paramètres de la base de données.

Gestion de la migration

  • Commencez par migrer les rôles utilisateur et les utilisateurs avant de passer aux nœuds.
  • En continuant à ajouter des fichiers dans le répertoire config/install, rechargez le répertoire avec une commande telle que drush config-import --partial --source=modules/custom/your_module/config/install (ceci nécessite que le module Config soit activé).

Renommer des champs lors de la mise à niveau vers Drupal 8

Supposons que votre site Drupal 7 possède un type de contenu A avec les champs foo, bar et baz. Supposons aussi que vous souhaitez renommer le champ baz en zot dans Drupal 8. Ce type de modification est assez simple à réaliser lors de la migration avec Drush.

  • Créez les migrations en utilisant drush migrate-upgrade --configure-only comme indiqué dans la page mentionnée ci-dessus.
  • Exécutez la migration du type de nœud et des champs. Cela générera le type de contenu A avec les champs foo, bar et baz.
  • Créez manuellement le champ zot dans Drupal 8. Supprimez la base baz générée par la migration, mais que vous ne souhaitez pas utiliser.
  • Le module Migrate Plus permet d’implémenter des modules connectables en tant qu’objets de configuration, facilitant leur chargement, modification et sauvegarde. Les migrations individuelles créées avec drush migrate-upgrade --configure-only peuvent désormais être vérifiées via admin/config/development/configuration/single/export en sélectionnant « Migration » comme type de configuration. Choisissez la migration du type de nœud (A).
  • Copiez-collez la migration dans admin/config/development/configuration/single/import, mais modifiez le mapping de champ pour que le champ cible soit field_zot tout en continuant à mapper la source de field_baz. Le contenu exact de la définition dépendra du type de champ. Pour comprendre la structure des migrations, consultez les exemples dans la documentation de l’API Migrate.
  • Une fois la migration modifiée importée, vous pouvez lancer la migration du type de nœud A via Drush et vérifier que les données sont bien transférées vers le champ zot.
  • Répétez la modification du mapping pour la migration des révisions du nœud (A) si vous prévoyez aussi de migrer les révisions.

Une autre méthode pour obtenir le même résultat est de créer manuellement le nouveau champ zot, comme décrit ci-dessus, et de modifier le mapping de champ de la migration des nœuds (A) en implémentant hook_migration_plugins_alter().

Écriture de plugins de processus personnalisés

Si vous devez définir une logique de transformation personnalisée (exemple : if-else), vous pouvez envisager d’écrire votre propre plugin de processus.

Un exemple dans la documentation de l’API Migrate utilise la migration utilisateur. Pour déterminer le code de langue de l’utilisateur, une logique if-else est nécessaire, et c’est pourquoi le module User fournit son propre plugin de processus UserLangcode.

L’exemple ci-dessus décrit où enregistrer le processus dans MODULE/src/Plugin/migrate/process et comment l’annoter pour qu’il soit utilisable. Utilisez UserLangcode et d’autres plugins de processus comme exemples pour écrire le vôtre !

hook_migrate_prepare_row()

Si vous devez définir une logique de transformation personnalisée, vous pouvez aussi implémenter hook_migrate_prepare_row() dans votre module personnalisé et y coder votre logique.

Comme indiqué dans la documentation de l’API, ce hook reçoit trois arguments :

Vous pouvez utiliser $migration->id() pour limiter votre logique à une migration spécifique.

Pour lire une propriété source dans une variable, utilisez Row::getSourceProperty() ; par exemple, si la ligne source contient une propriété nommée type, vous pouvez faire : $type = $row->getSourceProperty('type');

Pour définir une nouvelle propriété que vous pouvez utiliser comme source dans la définition de migration, utilisez Row::setSourceProperty().

Pour faire des requêtes à la base de données du site source, utilisez $source->getDatabase()->query(), comme montré dans la documentation de l’interface de connexion.

Pour ignorer une ligne lors de la migration, vous pouvez lancer une nouvelle exception MigrateSkipRowException.

hook_migration_plugins_alter()

Une autre manière de configurer la migration est d’implémenter la fonction hook_migration_plugins_alter() dans votre module personnalisé.

Comme indiqué dans la documentation, ce hook reçoit un argument qui est un tableau associatif de toutes les migrations détectées. Vous pouvez modifier ou supprimer des migrations que vous ne souhaitez pas exécuter.

Migrate Plus fournit l’événement PREPARE_ROW

Si vous préférez écrire vos réponses personnalisées à l’événement prepare_row de manière orientée objet plutôt que d’implémenter hook_migrate_prepare_row(), vous pouvez le faire si vous avez activé le module Migrate Plus. Migrate Plus fournit un événement PREPARE_ROW auquel votre subscriber peut s’abonner. Vous pouvez consulter la documentation API Drupal 8 sur les événements. Pour un exemple d’implémentation d’un subscriber d’événement dans un autre contexte, voir cet exemple dans le guide du module Simple FB Connect.