Planète

Personnaliser un export CSV avec Entity Export CSV sur Drupal 8

Le module Entity Export CSV nous permet de mettre en place très rapidement des exports CSV pour n'importe quelle type d'entité de contenu de Drupal 8. Parfois, nous pouvons avoir besoin de personnaliser les exports réalisés, comme exporter 2 informations différentes d'un même champs Entity Reference par exemple. Nous allons découvrir comment procéder pour personnaliser nos exports CSV.

Par Iloofo
Iloofo

Fin de vie de Drupal 7 et 8, êtes-vous prêts ?

Les versions 7 et 8 de Drupal arriveront en fin de vie en novembre 2021.

Qu’entend-on par fin de vie ?

La "fin de vie" annonce qu’il n’y aura plus de mise à jour de sécurité pour les versions en question.
À partir de cette date (novembre 2021), les failles qui seront découvertes et corrigées sur la version 9 ne le seront plus sur les versions 7 et 8.

Votre site sera donc vulnérable aux attaques.

Par Iloofo
Iloofo

Fin de vie de Drupal 7 et 8, êtes-vous prêts ?

Les versions 7 et 8 de Drupal arriveront en fin de vie en novembre 2021.

Qu’entend-on par fin de vie ?

La "fin de vie" annonce qu’il n’y aura plus de mise à jour de sécurité pour les versions en question.
À partir de cette date (novembre 2021), les failles qui seront découvertes et corrigées sur la version 9 ne le seront plus sur les versions 7 et 8.

Votre site sera donc vulnérable aux attaques.

Par kgaut
Kevin Gautreau

Drupal 8 & 9 - Hook Update - Tester si une table existe, la supprimer et la recréer

Pour un projet drupal, j'avais besoin de créer deux tables identiques dans une base de données séparée sur un serveur différent, afin de servir de cache pour un webservice.

Voici le code que j'ai utilisé pour créer ces tables avec un test si les tables existe avant de les récréer (si j'ai besoin de mettre à jour le modèle par exemple).

Définition du schéma de ma table dans le fichier MODULE.install :

# Le nom de cette fonction est personnel, je n'utilise pas le HOOK_schema() icifunction MODULE_schema_db_cache() {  $schema['proposals'] = [    'description' => 'distribProposal',    'fields' => [],    'primary key' => ['id'],    'indexes' => [      'id' => ['id'],      'room_type_code' => ['room_type_code'],    ],  ];   $schema['proposals']['fields']['id'] = [    'description' => 'id',    'type' => 'serial',    'not null' => TRUE,    'unsigned' => TRUE,  ];   $schema['proposals']['fields']['name'] = [    'type' => 'varchar',    'length' => 255,  ];  //Ajout des champs supplémentaires ici}

Création des tables via un hook_update() :

/** * DB cache ws - Creation tables */function MODULE_core_update_8005() {  try {    // Je passe sur une autre base de données définis dans mes settings     // ici : $databases['cache_ws']['default']    Database::setActiveConnection('cache_ws');    // Je récupère le schéma    $db = MODULE_schema_db_cache();    if($schema = Database::getConnection()->schema()) {      // Je veux avoir deux fois la même table afin de passer sur la seconde quand je met à jour la première      $tables = ['proposals_a', 'proposals_b'];      foreach ($tables as $table) {        // Si la table existe déjà je la supprime        if ($schema->tableExists($table)) {          $schema->dropTable($table);        }        // Puis je la recrée        $schema->createTable($table, $db['proposals']);      }    }  }  catch (Exception $e) {    // En cas de soucis je commence par basculer sur la base de donnée par défaut    Database::setActiveConnection();     // Puis je lance une erreur    throw new \Drupal\Core\Utility\UpdateException(t('vacanceole_core_update_8005 error : @message', ['@message' => $e->getMessage()]));  }    // Si tout s'est bien passé je repasse sur la base de données par défaut.  Database::setActiveConnection();  return t('Tables proposals_a and proposals_b successfully created');}

Pour bien faire je devrais ajouter l'installation de mes tables dans un hook install, en faisant appel à la fonction que je viens de définir :

function MODULE_install() {  MODULE_update_8005();}

 

Par admin

Drupal 9 est là !

Logo Drupal

5 ans après la version 8, Drupal 9 est sorti en version stable ce mercredi 3 juin 2020.

Les nouveautés sont nombreuses depuis Drupal 8.0 : gestion des médias, éditeur de mise en page, gestion des flux de publication, intégration avec Composer...

Une évolution dans la continuité...

...plutôt qu'une révolution.

Drupal 7 -> Drupal 8 & Drupal 8 -> Drupal 9 -> Drupal 10

Contrairement au passage de Drupal 7 à Drupal 8, le passage de Drupal 8 à Drupal 9 sera très simple.

En effet, depuis Drupal 8.0.0, la gestion du code a changé :

  • De nouvelles fonctionnalités sont ajoutées entre les versions intermédiaires (8.1.* => 8.2.*)
  • Entre ces mêmes versions intermédiaires, certaines fonctions ou méthodes de l'API Drupal peuvent être signalées comme « dépréciées » (deprecated) mais restent fonctionnelles.
  • Ce sont ces dépréciations qui sont aujourd'hui supprimées dans Drupal 9

Pour faire simple : Drupal 9.0 = Drupal 8.9 - Toutes les fonctions dépréciées.

API Drupal 8.9 et API Drupal 9.0

De nombreux modules sont déjà compatibles et de nombreux outils existent pour rendre vos modules personnalisés compatibles avec la nouvelle version du CMS.

Questions / Réponses

Quels sont les prérequis pour Drupal 9 ?

  • PHP 7.3 minimum
  • MySQL 5.7.8 minimum
  • Drush 10
  • Composer grandement recommandé !

Je viens de commencer un projet sous Drupal 8. Faut-il que je recommence tout sous Drupal 9 ?

Non, vous pourrez facilement mettre à jour le core de Drupal vers la version 9 une fois que tous les modules tiers que vous utilisez seront compatibles.

Comment tester Drupal 9 ?

Avec composer c'est très simple et cela se fait en deux lignes :

composer create-project drupal/recommended-project:9.0.0 drupal9<br />php drupal9/web/core/scripts/drupal quick-start demo_umami

Cela vous lancera l'installation d'un drupal 9 avec un site de démo présentant des recettes de cuisite.

Comment migrer mon site Drupal 8 vers Drupal 9 ?

  1. Assurez-vous que votre hébergeur / serveur répond bien aux prérequis pour Drupal 9 (voir plus haut)
  2. Faites les mises à jour du core, la migration vers Drupal 9 ne sera possible que pour les version 8.8.* et supérieures.
  3. Faites les mises à jour des modules tiers en vous assurant que les modules sont compatibles avec Drupal 9.
  4. Mettez votre code custom en conformité avec l'API de Drupal en supprimant les appels dépréciés.
  5. Mettez le core à jour.

« et voila ! »

Comment savoir si un module est compatible avec Drupal 9 ?

Cela peut-être vérifié de plusieurs manière. Pour commencer sur la page du projet sur drupal.org, dans les informations de téléchargement :

Drupal 9 project

Aussi vous pourrez trouver l'information équivalente sur le fichier .info.yml du projet.

Enfin, vous pouvez faire des recherche directement sur le site https://dev.acquia.com/drupal9/deprecation_status

J'ai un site Drupal 7, dois-je passer par Drupal 8 avant de migrer sous Drupal 9 ?

Pas forcement, via l'API de migration (Migrate API) il est possible de migrer un Drupal 7 directement sous Drupal 9.

Quand s'arrêtera le support de Drupal 7 ? De Drupal 8 ?

Le support de Drupal 7 devait s'arrêter aujourd'hui, il a finalement été étendu à la fin 2021, le support de Drupal 8 s’arrêtera aussi au même moment.

J'ai un site Drupal 7 qui ne peut pas être mis à jour, que se passera-t-il à la fin du support ?

Vous ne recevrez plus de mise à jour de sécurité pour votre site, il sera donc vulnérable.

Un programme de support payant, assuré par des entreprises tierces sera mis en place.

Quand Drupal 9.1 sortira-t-il ?

Drupal devrait garder les cycles de 6 mois mis en place depuis la version 8.0, théoriquement la version 9.1 devrait sortir le 2 décembre 2020.

Quand Drupal 10 sortira-t-il ?

Toujours en théorie, Drupal 10 sortira au deuxième trimestre 2022.

Plus d'informations

Toutes les informations sur Drupal 9 : https://www.drupal.org/9

Migrer de Drupal 8 à Drupal 9 : https://www.drupal.org/about/9/from-8

Statut des modules : https://dev.acquia.com/drupal9/deprecation_status


Vous avez des questions ? N'hésitez-pas à les poser sur le Slack de la communauté francophone ou sur Twitter avec le hashtag : #drupal9FR. Nous les ajouterons à cet article si nous pouvons y répondre.

Par admin

Drupal 9 est là !

Logo Drupal

5 ans après la version 8, Drupal 9 est sorti en version stable ce mercredi 3 juin 2020.

Les nouveautés sont nombreuses depuis Drupal 8.0 : gestion des médias, éditeur de mise en page, gestion des flux de publication, intégration avec Composer...

Une évolution dans la continuité...

...plutôt qu'une révolution.

Drupal 7 -> Drupal 8 & Drupal 8 -> Drupal 9 -> Drupal 10

Contrairement au passage de Drupal 7 à Drupal 8, le passage de Drupal 8 à Drupal 9 sera très simple.

En effet, depuis Drupal 8.0.0, la gestion du code a changé :

  • De nouvelles fonctionnalités sont ajoutées entre les versions intermédiaires (8.1.* => 8.2.*)
  • Entre ces mêmes versions intermédiaires, certaines fonctions ou méthodes de l'API Drupal peuvent être signalées comme « dépréciées » (deprecated) mais restent fonctionnelles.
  • Ce sont ces dépréciations qui sont aujourd'hui supprimées dans Drupal 9

Pour faire simple : Drupal 9.0 = Drupal 8.9 - Toutes les fonctions dépréciées.

API Drupal 8.9 et API Drupal 9.0

De nombreux modules sont déjà compatibles et de nombreux outils existent pour rendre vos modules personnalisés compatibles avec la nouvelle version du CMS.

Questions / Réponses

Quels sont les prérequis pour Drupal 9 ?

  • PHP 7.3 minimum
  • MySQL 5.7.8 minimum
  • Drush 10
  • Composer grandement recommandé !

Je viens de commencer un projet sous Drupal 8. Faut-il que je recommence tout sous Drupal 9 ?

Non, vous pourrez facilement mettre à jour le core de Drupal vers la version 9 une fois que tous les modules tiers que vous utilisez seront compatibles.

Comment tester Drupal 9 ?

Avec composer c'est très simple et cela se fait en deux lignes :

composer create-project drupal/recommended-project:9.0.0 drupal9<br />php drupal9/web/core/scripts/drupal quick-start demo_umami

Cela vous lancera l'installation d'un drupal 9 avec un site de démo présentant des recettes de cuisite.

Comment migrer mon site Drupal 8 vers Drupal 9 ?

  1. Assurez-vous que votre hébergeur / serveur répond bien aux prérequis pour Drupal 9 (voir plus haut)
  2. Faites les mises à jour du core, la migration vers Drupal 9 ne sera possible que pour les version 8.8.* et supérieures.
  3. Faites les mises à jour des modules tiers en vous assurant que les modules sont compatibles avec Drupal 9.
  4. Mettez votre code custom en conformité avec l'API de Drupal en supprimant les appels dépréciés.
  5. Mettez le core à jour.

« et voila ! »

Comment savoir si un module est compatible avec Drupal 9 ?

Cela peut-être vérifié de plusieurs manière. Pour commencer sur la page du projet sur drupal.org, dans les informations de téléchargement :

Drupal 9 project

Aussi vous pourrez trouver l'information équivalente sur le fichier .info.yml du projet.

Enfin, vous pouvez faire des recherche directement sur le site https://dev.acquia.com/drupal9/deprecation_status

J'ai un site Drupal 7, dois-je passer par Drupal 8 avant de migrer sous Drupal 9 ?

Pas forcement, via l'API de migration (Migrate API) il est possible de migrer un Drupal 7 directement sous Drupal 9.

Quand s'arrêtera le support de Drupal 7 ? De Drupal 8 ?

Le support de Drupal 7 devait s'arrêter aujourd'hui, il a finalement été étendu à la fin 2021, le support de Drupal 8 s’arrêtera aussi au même moment.

J'ai un site Drupal 7 qui ne peut pas être mis à jour, que se passera-t-il à la fin du support ?

Vous ne recevrez plus de mise à jour de sécurité pour votre site, il sera donc vulnérable.

Un programme de support payant, assuré par des entreprises tierces sera mis en place.

Quand Drupal 9.1 sortira-t-il ?

Drupal devrait garder les cycles de 6 mois mis en place depuis la version 8.0, théoriquement la version 9.1 devrait sortir le 2 décembre 2020.

Quand Drupal 10 sortira-t-il ?

Toujours en théorie, Drupal 10 sortira au deuxième trimestre 2022.

Plus d'informations

Toutes les informations sur Drupal 9 : https://www.drupal.org/9

Migrer de Drupal 8 à Drupal 9 : https://www.drupal.org/about/9/from-8

Statut des modules : https://dev.acquia.com/drupal9/deprecation_status


Vous avez des questions ? N'hésitez-pas à les poser sur le Slack de la communauté francophone ou sur Twitter avec le hashtag : #drupal9FR. Nous les ajouterons à cet article si nous pouvons y répondre.

Revue de presse

Mais également sur

Par Q__nt_n
Quentin Fonteneau

Exporter/Importer une base de données avec Drush

Exporter/Importer une base de données avec Drush
Q__nt_n
jeu 28/05/2020 - 11:11

Pour exporter sa base de données :

drush sql-dump --gzip --result-file=../backup/dump_db_$(date +%Y%m%d-%H%M%S).sql

Pour importer sa base données :

gunzip -c dump_db_YYYYMMDD_HHMMSS.sql.gz | drush sqlc

Thématique

Par Christophe MOLLET
Christophe Mollet

Comment créer un module avec Drupal 8 ?

Un module est un ensemble de fichiers PHP, Javascript et/ou CSS qui étendent les fonctionnalités du site et en ajoutent de nouvelles

Nous allons voir dans cet article comment créer un module avec Drupal 8.

Par kgaut
Kevin Gautreau

Drupal 8 - Modifier les onglets (local tasks)

Voici comment modifier un onglet Local Task dans le langage drupal, en utilisant le hook HOOK_local_tasks_alter:

function MONMODULE_local_tasks_alter(&$local_tasks) {  $local_tasks['entity.user.edit_form']['title'] = 'Modifier mes informations';}

La clé est définie dans la déclaration de l'élément :

Image

Drupal local task

 

Ici uniquement le titre est changé,il est possible de modifier les autres propriété, comme l'ordre (weight), la destination de l'élément...

Par Q__nt_n
Quentin Fonteneau

Exporter/Importer une base de données avec Drush

Exporter/Importer une base de données avec Drush
Q__nt_n
jeu 07/05/2020 - 12:26

Thèmes :

Pour exporter sa base de données :

drush sql-dump --gzip --result-file=../backup/dump_db_$(date +%Y%m%d-%H%M%S).sql

Pour importer sa base données :

gunzip -c dump_db_YYYYMMDD_HHMMSS.sql.gz | drush sqlc

 

Créer un sous-thème avec Drupal 8

Créer un thème ou un sous-thème dédié à un projet Drupal 8 fait partie des actions de base lors du démarrage du projet. Un thème dédié pour le front office, mais aussi un autre thème pour le back office. Ainsi toute personnalisation du rendu en sera facilité, par l'ajout de région, styles CSS ou encore librairies JS le cas échéant. Créer un sous-thème se fait en quelques minutes.

Intégrer automatiquement un mail via les styles CSS avec Drupal 8

Comment mettre des couleurs dans vos mails émis depuis votre site Drupal 8 ? Bien souvent, intégrer les mails émis par un site Drupal 8, ou de n'importe quel site web, peut s'avérer (très) chronophage, avec des contraintes fortes au niveau du rendu du mail pour disposer d'un rendu correct sur tous les types de courrielleur ou webmail. Découvrez une méthode pour faciliter l'intégration des emails avec de l'inline CSS automatisée.

Par vincent59
Vincent Liefooghe

Migration Media et Images Inline

Migration Media et Images Inline

Dans la série d'articles sur la migration de mon site https://www.vincentliefooghe.net/content/migration-drupal-7-vers-drupal-8 j'en viens maintenant à une partie qui m'a pris pas mal de temps et demandé un peu de développement.

Sur mon site en Drupal 7, j'avais utilisé le module Media_Wysiwyg et Colorbox, qui me permettaient d'insérer des images directement dans le texte.

Je n'ai pas trouvé d'équivalent sous Drupal 8, mais en utilisant comme format d'affichage "Colorbox" pour le champ media_image, ceci répond à mon besoin : ouvrir un champ image dans une "lightbox".

Image
Définition du format d'affichage Media Image

Il reste donc à convertir les fichiers en média, et ensuite à convertir, dans le corps du texte de chaque contenu, les tags "colorbox" en tags "drupal media".

Création des Media liés aux fichiers

Lors de la migration, les fichiers ont bien été importés. Par contre ils ne sont pas reconnus comme media par Drupal ,et donc pas réutilisables.

Après avoir cherché - en vain - des modules qui géraient ceci, j'ai fini par passer par un bout de programme PHP qui utilise les fonctions de Drupal pour réaliser cette opération.

Le code php est le suivant :

query("select * from file_managed where filemime like 'image%'")->fetchAll();

foreach ($results as $file ) {
  echo "File name:",$file->filename," Id : ",$file->fid," mime : ",$file->filemime," uid : ",$file->uid;
  echo "Creation du Media Image pour ",$file->filename,PHP_EOL;
  $media = Media::create([
  'bundle' => 'image',
  'uid' => $file->uid,
  'langcode' => $file->langcode,
  'field_media_image' => [
    'target_id' => $file->fid,
    'alt' => $file->filename
   ]

  ]);

  $media->setPublished(TRUE);
  $retour=$media->save();

  if ( $retour != 1 ) {
    echo "Retour KO ? ",$retour,PHP_EOL;
  }

}

return (TRUE);

 

On peut le lancer avec drush, via la commande :

 

drush --uri=drupal.loc scr /chemin/vers/mon/fichier.php

Après cette étape, on récupère bien dans la librairies de media tous les fichiers

Reprise des images inline

 

Pour convertir les tags, j'ai développé un programme PHP qui va remplacer les instructions inline Colorbox, par exemple

[[{"type":"media","view_mode":"colorbox","fid":"88","attributes":{"alt":"","class":"media-image","height":"300","typeof":"foaf:Image","width":"494"}}]]

par

Le script sera lancé avec en paramètre le Node Id à traiter :

php mediaInline.php -i nid

Par exemple

php mediaInline.php -i 136

Note : j'ai fait le choix de traiter les contenus un par un. Au total, j'avais identifié une vingtaine d'articles concernés. La migration unitaire me permettait de vérifier le traitement pour chacun.

Afin de voir le résultat, il faut vider le cache Drupal avec la commande :

drush cr

 

vincentl
lun 20/04/2020 - 21:54

Catégorie

Ajouter un commentaire

Par vincent59
Vincent Liefooghe

Migration avec le module migrate_upgrade

Migration avec le module migrate_upgrade

Installation et activation des modules Drush requis

On va installer les 2 modules suivants : migrate_upgrade, migrate_tools.

composer require drupal/migrate_upgrade composer require drupal/migrate_tools 

Puis activer les modules :

drush pm:enable migrate_upgrade migrate_tools -y 

Dans le fichier settings.php , il faut ajouter la définition de la base source.

Important : elle doit s'appeler migrate.

Par exemple :

$databases['migrate']['default'] =
  array ( 'database' => 'dbdrupal7',
  'username' => 'user_drupal7',
  'password' => 'mdp_drupal7',
  'prefix' => '',
  'host' => 'localhost',
  'port' => '3306',
  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
  'driver' => 'mysql'
);

Générer la migration Drupal 7 vers Drupal 8

Dans la version que j'ai installé, on peut utiliser migrate_upgrade pour générer les scripts de migration, qui seront lancés avec drush.

Prérequis

Attention : à cause d'une incompatibilité avec drush 10, cette fonction nécessite que l'on modifie le fichier vendor/drush/drush/includes/drush.inc pour ajouter la définition de drush_print :

function drush_print($message = '', $indent = 0, $handle = NULL, $newline = TRUE) {
  $msg = str_repeat(' ', $indent) . (string)$message;
  if ($newline) {
    $msg .= "\n";
  }
  if (($charset = 'UTF-8' ) && function_exists('iconv')) {
    $msg = iconv('UTF-8', $charset, $msg);
  }
  if (!$handle) {
    $handle = STDOUT;
  }

  fwrite($handle, $msg);

}

 

Sinon on a le message :

drush migrate-upgrade --legacy-db-key=migrate --configure-only [error] Error: Call to undefined function drush_get_option() in drush_print()

Lancer la commande avec le chemin vers le répertoire source "legacy", ce qui permet de migrer les fichiers également :

drush migrate-upgrade --legacy-db-key=migrate --legacy-root /var/www/drupal7/vincentl --migration-prefix=upg1_ --configure-only

On peut ensuite voir le résultat avec la commande drush migrate-status

Et on peut lancer la migration avec :

drush migrate:import upg1_d7_taxonomy_vocabulary
drush migrate:import upg1_d7_taxonomy_term_categorie
drush migrate:import upg1_d7_taxonomy_term_tags
drush migrate-import --group=migrate_drupal_7

Note : je lance d'abord les migrations de taxonomie pour que la génération des liens de menu se passe correctement. Comme dit précédemment, le processus est assez itératif et a demandé plusieurs essais avant de trouver les bons réglages.

Après cette étape, le contenu a été migré, ainsi que les types de contenu, les menus, etc.

Il reste à faire quelques mises au point et reprise de paramétrage sur les formats de texte (insertion du bouton media par exemple), ainsi que refaire le thème, et traiter le cas des images inline.

 

vincentl
lun 20/04/2020 - 21:42

Catégorie
Tag

Ajouter un commentaire

Par vincent59
Vincent Liefooghe

Processus de migration vers Drupal 8

Processus de migration vers Drupal 8

Processus de migration

Le processus de migration a été testé plusieurs fois. Je suis parti sur la base d'une sauvegarde du site Drupal 7 (fichiers + base de données).

J'ai installé ça dans un container LXC sur mon PC, ce qui me permettra de supprimer tout cela une fois la migration terminée.

Au final, on a donc un container sous Debian 10 avec PHP 7.3.11 et une base MariaDB 10.1.

L'idée est donc la suivante :

  • création d'une base de données pour Drupal 8
  • installation d'un site en Drupal 8, en mode "standard", mais sans contenu
  • installation et activation des modules portés sous Drupal 8
  • installation et activation des modules de migration
  • lancement de la migration des contenus
  • reprise des média et de leur affichage (la migration ne gère pas ce point a priori)
  • ajustements manuels / reparamétrage dans la cible D8.

Le processus a été fait de manière itérative, je m'y suis repris à 3 ou 4 fois avant d'avoir un processus qui tienne la route.

Installation Drupal 8

Une fois la base de données créée, on procède à l'installation de Drupal 8.

A la date d'installation, la version est Drupal 8.8.5.

Il est maintenant fortement recommandé d'utiliser composer pour installer et mettre à jour Drupal.

Sachant que même l'installation de modules utilise composer, c'est la solution que j'ai utilisé. C'est d'ailleurs très pratique quand on refaire plusieurs fois la même installation, puisqu'une fois le fichier _composer.json _ généré, il est possible de s'en resservir.

Mon fichier comprend les modules suivants :

"repositories": [<br />
  { "type": "composer",<br />
  "url": "https://packages.drupal.org/8" }<br />
 ],<br />
"require": {<br />
  "composer/installers": "^1.2",<br />
  "drupal/colorbox": "^1.4",<br />
  "drupal/core-composer-scaffold": "^8.8",<br />
  "drupal/core-project-message": "^8.8",<br />
  "drupal/core-recommended": "^8.8",<br />
  "drupal/honeypot": "^1.30",<br />
  "drupal/pathauto": "^1.6",<br />
  "drupal/tagclouds": "^1.0",<br />
  "drupal/token": "^1.6",<br />
  "drupal/xmlsitemap": "^1.0@RC",<br />
  "drush/drush": "^10.2" },

On remarquera que drush est installé en même temps que Drupal.

Une fois le répertoire d'installation créé, et le fichier composer.json copié dans ce répertoire, l'installation se fait simplement :

composer install

A ce niveau, on peut déjà accéder au nouveau site (il faut auparavant avoir paramétré le virtualhost qui pointe sur le bon répertoire), entrer les paramètres de la base de données. J'ai personnellement choisi d'installer uniquement le français, car je ne vais pas gérer le multilingue.

Comme le site sera migré, on peut s'arrêter avant la configuration du site.

L'étape suivante est de préparer et lancer la migration.

 

 

vincentl
dim 19/04/2020 - 12:45

Catégorie
Tag

Ajouter un commentaire

Par vincent59
Vincent Liefooghe

Migration Drupal 7 vers Drupal 8

Migration Drupal 7 vers Drupal 8

Après plusieurs années sous Drupal 7, et l'arrivée imminente de Drupal 9, il était temps pour moi de migrer mon site sur Drupal 8, d'autant que les dernières versions ont maintenant des utilitaires de migration.

Situation initiale

Mon site perso n'est pas très complexe, ni au niveau contenu (environ 200 articles) ni au niveau modules Drupal.

La version utilisée est Drupal 7.69.

En plus des modules du "core", j'utilise des choses plutôt classiques :

  • ctools (pré-requis pour pas mal de choses)
  • blog (a disparu de la V8, c'est un type de contenu comme les autres)
  • media et media_wysiwyg (pour insérer les images dans le contenu)
  • colorbox (pour afficher les images dans une box en surimpression)
  • pathauto (permet de générer automatiquement un alias)
  • botcha (comme anti-spam)
  • tagclouds (affiche les tags sous forme de nuage)
  • xmlsitemap

Le thème est un développement custom, basé sur Adaptative Theme. Il sera à refaire.

Dans tout ça, les seuls module non portés en D8 et pour lesquels il faudra trouver une alternative sont media_colorbox et botcha.

Pour l'antispam, j'ai opté pour le module honeypot, et pour media_colorbox, le paramétrage de l'affichage pour les médias de type image va suffire.

Côté volumétrie, on a :

  • 159 fichiers
  • 199 articles
  • 4 "books" (série d'articles sur le même sujet)
  • 64 commentaires.

On utilise 2 langues : français et anglais (9 en anglais, le reste en français ou neutre).

Préparation du site sous Drupal 7

Afin de simplifier la migration, je vais changer la langue des articles en anglais pour les assigner au français ou au neutre.

Pour les alias d'URL, même modification (on assigne tout au "All languages").

Vu la faible volumétrie, je fais cela directement via l'interface web de Drupal, ce qui me permet de m'assurer que tous les champs sont correctement mis à jour.

Suite aux tests effectués, j'ai aussi modifié le champ field_alt_text pour enlever colorbox_link du mode d'affichage.

Les différentes étapes de la migration seront détaillées dans la suite de cette série d'articles, avec les problèmes que j'ai pu rencontrer.

 

Vincent
dim 19/04/2020 - 12:40

Catégorie

Ajouter un commentaire

Par kgaut
Kevin Gautreau

Drupal - Découvrez la fonction ddm, pour débuguer même en aveugle

Si vous développez avec drupal, vous connaissez peut-être les fonctions dump, dpm ou kint, (sinon, lisez ma rapide présentation de kint.)

Une autre fonction très pratique mais moins connue est ddm(), anciennement connue sous le nom de dd(), qui permet de dumper les paramètres dans un fichier, au lieu de les afficher dans la page. Cette fonction est donc très pratique dans les cas où l’on a aucun retour d’affiché (batch, hook_update, EventSubscriber...)

Note : Cette fonction vient du module devel, le module doit donc être installé et activé pour que la fonction soit disponible.

Le paramètre passé à la fonction est dumpé dans le fichier temporary://drupal-debug.txt, ainsi, sur mon site le wrapper temporary:// est configuré dans le dossier ../files/tmp. (Note : cette configuration se fait directement dans le fichier settings.php de drupal, elle était avant dans Configuration / Médias / Système de fichier)

Image

Configuration dossier tmp

Je peux donc afficher le contenu de ce fichier directement dans un éditeur de texte. À savoir que les tableaux et objets sont dumpé hiéarchiquement, ce qui est pratique mais qui peut rapidement alourdir ce fichier !

# Dans un de vos fichier php : ddm($variable);

Image

Sortie de drupal_debug.txt

On peut assi ajouter des labels à ce que l'on dump pour éviter de se perdre quand on dump plusieurs variables :

function kgaut_2020_preprocess_node(array &$variables) {  /** @var \Drupal\node\Entity\Node $node */  $node = $variables['elements']['#node'];   ddm('------------------');  ddm($node->getType(), 'Type de noeud');  ddm($node->getTitle(), 'Titre');  ddm($node->getCreatedTime(), 'Created');...}

Image

Sortie de ddm

Enfin, la fonction bach tail, on peut afficher en live ce qui est dumpé, dans un terminal, sans avoir à recharger le fichier, la commande à exécuter est ci-dessous :

# Chemin à adapter en fonction de votre organisation : tail -f /vhosts/kgaut.net/files/tmp/drupal_debug.txt

Évidement, cela ne vaut pas un "vrai" debuger comme xdebug ou autre, mais c'est mieux que rien !

Pages