Publié le

Trier une vue Drupal par popularité avec Plausible Analytics

Lors de la création d'une page de listing, il est souvent nécessaire d'offrir à ses utilisateurs un tri par popularité basé sur le nombre de vues de chacune de ses pages mettant ainsi en avant vos contenus ayant le plus de chances de les intéresser.

Le module Statistics de Drupal

Pour se faire, Drupal propose le module Statistics fourni dans le cœur (pour le moment) qui permet de stocker anonymement le nombre de vues quotidiennes sur une node ainsi que depuis sa création.

Une fois celui-ci installé et configuré, il ne nous reste plus qu'à créer une Vue qui utilise les données qu'il récolte comme critère de tri et le tour est joué.

Même si cette solution est triviale à mettre en place et bien documentée, elle souffre cependant de quelques faiblesses liées au module Statistics :

  • Seules les vues quotidiennes et depuis la date de création de la node sont sauvegardées, impossible donc de trier ses articles plus finement selon une plage personnalisée (semaine, mois, année, etc.)
  • Il est difficile de filtrer quelles vues doivent être prises en compte pour exclure par exemple les vues comptabilisées par le développeur travaillant sur le projet

Le module Plausible Pageviews

Pour contourner ces limitations, j'ai créé le module Drupal Plausible Pageviews qui permet de récupérer le nombre de vues des pages directement depuis Plausible Analytics et de les sauvegarder sur son site.

Ce module est open-source et disponible sur GitHub : https://github.com/jverneaut/drupal-plausible-pageviews

Son fonctionnement est le suivant :

  1. Après installation et configuration, on ajoute le nouveau type de champ Plausible pageviews fourni par le module sur chaque type de contenu pour lequel on souhaite synchroniser le nombre de vues avec Plausible Analytics
  2. Lorsque la tâche CRON de Drupal est exécutée :
    1. Le module récupère l'ensemble des vues des pages grâces à l'API de Plausible Analytics
    2. Il trouve les contenus associées à partir des urls remontées par l'API
    3. Il met à jour le nombre de vues des pages pour chaque contenu qui possède un champ Plausible pageviews

En opérant ainsi, les données que l'on récupère sont donc les données réelles de fréquentation du site.

En modifiant la période sur laquelle on remonte ces données, il est facile de trier les pages les plus populaires de son site sur une période d'une semaine, d'un mois ou d'une année.

Comme c'est Plausible Analytics qui devient la source des données, on peut bénéficier de son système de filtrage basé sur une adresse IP, un pays, un navigateur ou un lot de pages pour ne pas influencer artificiellement sur le nombre de vues des pages en travaillant sur son propre site.

Dans le cas d'une migration vers Drupal, il devient également possible de conserver un précédent tri par popularité si le précédent site utilisait déjà Plausible Analytics et que la structure des urls entre les 2 est inchangée.

Limitations et améliorations

Ce module a été créé pour répondre à mon propre besoin, il comporte donc certaines limitations détaillées sur sa page GitHub liées à mon cas d'utilisation spécifique. Si votre besoin diffère du miens, je vous encourage toutefois à explorer son code source et à modifier la centaine de lignes qui contiennent le cœur de ses fonctionnalités pour l'adapter à votre propre besoin.