3.5.7. Data Aggregation in Views.
Le module Views permet non seulement d’afficher les données des tables Drupal, mais il sait aussi calculer ces lignes et grouper les résultats. Cette fonctionnalité s’appelle l’agrégation.
Par défaut, Drupal dispose d’un dictionnaire des étiquettes de taxonomie. Créons un bloc avec les étiquettes les plus populaires et affichons à la fin de chaque étiquette combien de contenus sur le site utilisent cette étiquette. On obtient une liste ressemblant à ceci :
Drupal 9 (5)
Drupal 8 (3)
PHP (2)
Pour commencer, vous devrez créer des Articles et leur attribuer des étiquettes.
/node/add/article
Après avoir créé un petit nombre d’articles, vous pouvez passer à la pratique.
/admin/structure/views/add
Ajoutez un bloc Views, sélectionnez Taxonomie et Étiquettes :
Ensuite, vous devez activer l’agrégation dans Views :
Nous avons maintenant des réglages supplémentaires pour l’agrégation dans les champs :
Ajoutez maintenant la RELATION Content avec le terme :
Sélectionnez “Exiger cette relation” pour ne compter que le contenu auquel l’étiquette est attribuée :
Nous avons maintenant besoin de deux champs du Term Taxonomy (Nom), nous cachons le premier :
Pour le deuxième champ, nous définissons le type d’agrégation sur Comptage (Count) :
Maintenant, si vous mettez à jour l’aperçu de la vue, vous verrez déjà le décompte du nombre d’utilisations de chaque terme de taxonomie :
Il ne reste plus qu’à afficher le nom de l’étiquette devant chaque nombre. Pour ce faire, nous utilisons le deuxième champ, dans lequel nous affichons le premier champ caché et entre parenthèses la valeur du deuxième champ. Pour cela, nous utiliserons le paramètre “Remplacer les résultats” (Overwrite Results) :
Dans la liste déroulante MOTIFS DE REMPLACEMENT (REPLACEMENT PATTERNS), nous pouvons voir quels champs peuvent être utilisés lors du remplacement de ce champ.
{{name}} ({{name_1}})
Nous écrivons le deuxième champ entre parenthèses afin que notre nombre soit entre crochets. Les accolades viennent de Twig, nous y reviendrons plus tard, pour l’instant il suffit de savoir que si nous utilisons ces valeurs dans {{}} elles seront remplacées par les valeurs des champs dont nous avons besoin.
Au final, vous devriez avoir ces champs :
Ce qui devrait ressembler à ceci :