Un magazine sportif avec Drupal - le module Sports League pour gérer des clubs, des joueurs, des résultats

Photo du stade Vélodrome de Marseille illustrant une compétition sportive, gagnante
Nous avons récemment été consultés pour réfléchir au développement d'un site d'un magazine sportif, consacré au football, avec Drupal. L'objectif était ici de savoir si la communauté Drupal proposait une suite modulaire réutilisable pour permettre de gérer un club, son effectif et ses résultats.

Le contexte

Le projet concerné dépassait en effet la simple gestion d'un club amateur ou professionnel. Le magazine traite en effet de l'actualité de son sport, notamment amateur, propose un annuaire de tous les clubs engagés en France, leurs effectifs, traite les résultats du dimanche en temps réel pour certains matches, dès le soir pour les autres, propose des classements pour tous les championnats, les clubs, les buteurs, etc. Actuellement propulsé par le module SportPress de Wordpress, il présente de nombreux dysfonctionnements et des problèmes de performance importants.

Le journal, qui emploie une vingtaine de salariés et un réseau de relais bénévoles, a pour objectif de devenir la plateforme de référence du football amateur français. Financé par la publicité, son projet web doit également disposer d'une fonctionnalité avancée de gestion des annonceurs, des annonces et de leurs performances.

Avant de réfléchir à la reprise des contenus, des utilisateurs, à la conception UX et UI, nous avons été consultés pour savoir si la communauté Drupal proposait des solutions déclinables ou adaptables.

Gestion des résultats - Le module Sportsleague

Il s'agissait là, pour nous, du gros morceau du projet ! 

Le module ou la distribution Sports League, disponible en Drupal 8 et non encore portée vers Drupal 9, a concentré l'essentiel de nos recherches. Il apparait comme le seul développement avancé sur le sujet dans la communauté. Bien que contribué en 2017 et très peu maintenu depuis cette date, nous avons tenté de l'installer et de l'analyser.

Partagé et maintenu par Hernâni Borges de Freitas (hernani), il semble propulser un site à l'attention des supporter et sympathisants de Benfica - https://serbenfiquista.com. Le module promet :

  • Une gestion des joueurs ;
  • Une gestion des transferts ;
  • Une gestion des clubs ;
  • Une gestion des équipes ;
  • Une gestion des compétitions ;
  • Une gestion des matches ;
  • Une gestion des résumés de matches (ou commentaires).

Sur le papier, le module était un bon départ. Dans notre cas, il en faisait trop par certains endroits, pas assez dans d'autres. Il risquait en effet d'être trop orienté "club" et pas assez sites d’actualités. C’est un peu le même problème qu’avec SportsPress sur Wordpress d’ailleurs.

Nous avons installé très rapidement le module pour permettre de le tester, à la fois sur le plan fonctionnel (en atelier avec l'équipe projet) et sur le plan technique. Nous avons constaté qu'il fallait enrichir le déploiement par défaut de nombreuses configurations avancées pour que toutes les fonctionnalités soient accessibles ou compréhensibles.

Lors de notre simulation de paramétrage d'un match, il nous a fallu une vingtaine de minutes pour renseigner toutes les informations obligatoires du match. Sans import externe, l'énergie dépensée rend difficile l'utilisation du module pour administrer une quantité importante de compétitions. 

La vraie question est de savoir si :

  • Nous pouvons nous appuyer sur la suite de modules SportsLeague en la modifiant, en supprimant les configurations et fonctionnalités inutiles, en ajoutant les nouvelles fonctionnalités nécessaires au projet. 
  • Nous réalisons un développement sur-mesure en reprenant certains modules de SportsLeague qui conviendraient (le module est lui-même éclaté en matches, competitions, joueurs, etc.)

Comme nous l'avons présenté en atelier, techniquement, ce que propose SportLeague ne serait pas très compliqué à reproduire, juste potentiellement long selon le schéma des relations entre les différentes entités à modéliser. Par exemple : 

Notre décision :
Nous avons proposé un développement spécifique, comme si l’on partait de zéro. 

Régie publicitaire

Le site utilise jusqu'ici la solution Adrotate qui permet de gérer les publicités externes html/js (type AdSense) et internes (via image/lien). Nous avons cherché une solution similaire sous Drupal pour ajouter la gestion des publicités groupées (plusieurs publicités au même endroit en rotation). Formats souhaités : 

  • megabanner : 728*90 ;
  • pavé : 300*250 ;
  • grand angle : 300*600 ;
  • skyscraper : 120*600 ;
  • billboard : 970*250 ;
  • habillage desktop - résolution supérieure à 1200 px.

La solution SimpleAds présentée sur le site bien que non fonctionnelle en l’état lors de l’atelier est fonctionnellement équivalente à la solution AdRotate utilisée actuellement sur le site WordPress. Nous pensons que la solution “gratuite” est volontairement compliquée à mettre en place par rapport à la solution premium.

Notre conseil :
Utilisation de SimpleAds Premium.

Imports

Rappel du besoin :
Reprise des contenus du site Wordpress - l'ensemble des actualités  (texte + images + vidéos) et de leurs taxonomies, informations issues du module sportpress.

Nous avons rappelé l’importance pour le magazine de pouvoir importer un maximum d’éléments (ex: calendrier des matches) à partir de fichiers CSV.

Drupal est bien outillé pour reprendre du contenu standard en provenance de Wordpress (articles, pages, utilisateurs). Mais l’import des données de SportPress devra faire l’objet d’une attention particulière et de développements spécifiques que nous avons choisi d'isoler.

Circuits de validation

Nous avons noté le besoin d’un circuit de validation simple en interne (brouillon → validation → publication). Ceci étant, la rédaction du magazine prévoit de pouvoir ouvrir les publications (équipes, matches, clubs) aux clubs, en deux temps :

  • Une phase de test où ce que soumet le club est sujet à validation ;
  • Une phase de confiance où le club peut directement publier.

Ce projet est aussi un point en faveur d’une solution spécifique à la place de SportsLeague. En effet Drupal permet par défaut ce genre de workflow mais sur l’ensemble des contenus ou d’un type de contenus (ex : toutes les équipes)... Alors qu'il est ici nécessaire que chaque club ne puisse modifier que ses propres informations. Ce fonctionnement est possible avec un module contribué comme Groups, mais nous ne sommes vraiment pas certains à ce stade que SportsLeague les supportent.

Conclusion

Le module SportsLeague semble correspondre si vous n'avez qu'un club ou un nombre limité d'équipes à administrer. Dans le cas d'un magazine qui concentre une quantité importante de compétitions, d'équipes et de joueurs, il semble préférable de développer son propre module, même si certains éléments du module contribué dont réutilisable, car très correctement codés et documentés.