Dans le cadre de la mise à jour de mon site en Drupal 8 j'ai développé deux modules de formateur d'images pour faciliter l'utilisation du carrousel et d'une galerie d'image Bootstrap avec Drupal 8.
Mes modules Drupal 8
- Le formateur carrousel utilise le template du theme Boostrap pour afficher le champ image sous forme de carousel. Rien de particulier dans ce module si ce n'est une petite difficulté pour récupérer simplement et sans load les attributs de l'image (title et alt).
- Le formateur galerie utilise blueimp Gallery, une assez belle galerie construit sur Bootstrap. Le module va également utiliser le composant modal de Boostrap accessible depuis le thème du même nom.
Retour d’expérience sur le développement avec Drupal 8
Voici mon retour d’expérience pour ces premiers modules Drupal 8 en production :
L'utilisation globale de la Render API de Drupal est très agréable, tous ce qui sort en tableau associatif avec les fameuses clefs Drupal reconnaissable avec le # devient du markup (le plus souvent html), plus besoin d'utiliser de fonction render ou drupal_render en sortie.
Twig est assez souple, c'est vraiment un gros progrès, la subtilité face à PHPTemplate est qu'il est maintenant fréquent de devoir ajouter une fonction de preprocess au moindre traitement, voir plusieurs et il va falloir gérer la précédence des fonctions, ce qui risque parfois d'aller un peu trop loin.
Mettre son environnement en mode "dev", sans cache est tout de même un peu tricky avec la config de twig et cache Drupal à deux endroits différents : voir l'explication. Heureusement un nouvel outil, la console Drupal inspiré de la console symfony permet de rapidement mettre ça en place.
Je reviendrais probablement sur ce remplaçant compagnon de Drush.
Retour d’expérience sur Drupal 8
L'intégration de ckeditor et du quick edit est un bon point, mais c'est loin de rendre Drupal aussi user-friendly que d'autres CMS comme Wordpress.
Le multilangue Drupal 8 est basé sur entity translation, on traduit des champs et on ne met pas en relation deux noeuds comme sous Drupal 7, c'est une grosse avancée même si tout n'est pas encore parfait, par exemple pour les alias d'url, ou la visibilité de la traduction. Il manque un dashboard pour la traduction, il faut suivre l'avancée de Translation Management Tool mais pour l'instant ce module n'est pas utilisable.
Pour le côté négatif il y a la manque de certains modules, par exemple pathauto qui se fait cruellement ressentir. Beaucoup d'autres modules avec une version dev feront planter votre Drupal... et d'autres sont dans des versions "allégés", ce qui peut être frustrant, par exemple VBO sans la modification par lot de valeurs d'entités.
Drupal 8 en production ?
Au final je pense qu'il est encore trop tôt pour un gros projet en production Drupal 8, encore moins Commerce qui semble pourtant bientôt prêt.
Drupal 8 est plutôt prêt pour un projet headless, la couche webservice est efficace, rapide à mettre en place avec une modélisation facile grace au model d'entités de Drupal.
Drupal 8 un produit final ?
Un point assez bon se situera au niveau de la documentation qui bien que souvent incomplète couvre déjà presque tous les aspects de Drupal 8, en plus de pas mal d'articles sur la toile.
Mais pour l'instant on ressort assez frustré d'une expérience Drupal 8, il y a beaucoup de progrès flagrant face à Drupal 7 mais on se retrouve toujours un peu frustré, le module qui est passé dans le core a été trop allégé et il faut un module complémentaire, quelquefois même pour la couche UI !
Chaque avancée semble ne pas avoir été assez loin et l'intégration des gros modules dans le core amène la création de plus de nouveaux modules complémentaires... Mais il faudra faire le point avec Drupal 8.1 ou 8.2 qui sont également plein de promesses.