Durant cette longue série consacrée à la Création d'un module avec Drupal 8, nous avons pu appréhender beaucoup de nouveaux concepts intégrés à Drupal 8.
- Drupal Console, l'outil en ligne de commande pour simplifier le travail de développement;
- Les entités, aussi bien de type contenu @ContentEntityType que de type configuration @ConfigEntityType;
- Les formulaires d'entité tels que le formulaire de gestion d'une entité et le formulaire de listing d'un type d'entité;
- La configuration;
- La notion d'élément de formulaires @FormElement;
- Les services et l'injection de dépendances;
- Les plugins de champ @FieldType et @FieldWidget;
- Le système de hook;
- L'API de cache intégrée à Drupal 8;
Plus qu'un simple survol, nous avons pu apprendre à mettre tous ces éléments ensemble dans le but d'implémenter un module complexe orienté SEO.
Quelques pistes d'améliorations de notre module pourraient être les suivantes:
- Amener des critères de visibilités supplémentaires pour les liens internes: nous avons actuellement un critère de visibilité basé sur les chemins, nous pourrions également intégrer des critères tels que les types d'entité/bundles ou encore les sous-domaines;
- Permettre l'intégration de liens dans un langage particulier: par exemple faire en sorte qu'un lien interne amène toujours vers une page dans une langue spécifique en ajoutant une liste déroulante permettant de sélectionner, à choix, le langage courant (redirection dans la même langue que le contenu) ou un des langages du site (redirection forcée dans la langue choisie);
- Améliorer le formulaire de listing des entités (InternalLinkListBuilder) en y ajoutant, à choix, des actions (vérifier la concordance des entités liées, modifier le statut, supprimer) à pouvoir exécuter sur un set de liens (cases à cocher nécessaires) ou un réordonnancement "inline" (mode draggable);
- Trouver des solutions pour pouvoir étendre certaines fonctionnalités via des sous-modules, sans forcément passer par des hook mais plutôt en autorisant une "décoration", ou tout du moins une surdéfinition ou altération des classes existantes;
Cette liste n'est de loin pas exhaustive, il doit certainement y avoir d'autres fonctionnalités sympathiques à ajouter. Mais dans le cadre de cette série, nous nous arrêterons là pour le moment.
J'espère que vous avez pris plaisir à lire et expérimenter, et que vous avez appris de nouvelles techniques, que ça soit en terme d'analyse, de mise en place ou d'implémentation.
A bientôt !