Concevoir de nouvelles fonctionnalités est un des côtés les plus excitants de mon métier. Aujourd'hui, je vais vous raconter la création de ma dernière extension pour Joomla : Upcoming Articles.
La génèse du projet Upcoming articles
Derrière chaque projet de ce type, il y a en général une problématique. Le plus souvent, c'est un.e client.e qui souhaite disposer d'une fonctionnalité particulière sur son site et fait appel à un.e pro pour la créer car elle n'existe pas encore. Ce fut le cas avec le plugin Responsive Tables, par exemple. Mais il arrive aussi parfois que ce soit la/le pro qui soit confronté.e à cette problématique !
Parce que mon agenda clients est déjà rempli pour le dernier quadrimestre 2020, je profite de la période estivale pour rédiger le contenu que vous lirez (sans aucun doute) sur mon blog jusqu'à la fin de cette année. Cette période de calme relatif me permet de planifier sereinement la publication de mes articles en avance car je sais que je ne pourrais pas m'en occuper le moment venu.
Lorsque l'on a une ligne éditoriale en lien à sa stratégie de contenu, cette planification est plus qu'évidente, elle devient indispensable. Après avoir établi mon calendrier de publication, j'ai rédigé mes articles en veillant à ce que leurs dates de début de publication correspondent à celles de mon calendrier.
C'est en regardant tous mes futurs articles à paraitre que j'ai eu envie d'informer mon auditoire sur ce qui l'attendait. Je trouve sympa l'idée de pouvoir communiquer avec mes lecteurs sur mes prochaines publications pour les tenir au courant. J'aurais pu utiliser l'emailing mais j'avoue que je suis de moins en moins fan de cette méthode de communication que je trouve trop intrusive et trop polluante (au sens propre comme au sens figuré). Moi qui passe beaucoup de temps à lire des articles sur d'autres blogs, je ne crois pas avoir déjà vu ce type d'informations/communication nul part.
Pour afficher sur mon blog la liste de mes prochaines parutions, j'ai d'abord cherché à utiliser le module mod_articles_category sauf que celui-ci n'affiche pas les futurs articles en mode public. Puis, j'ai été fouiller sur le Joomla Extensions Directory où j'ai pu constater qu'il n'existait pas de solution à ce besoin. Pourtant, la question de l'affichage des futurs articles n'était pas nouvelle puisqu'un utilisateur avait déjà soulevé cette question sur le forum de Joomla en 2009 :
Je me suis rendu compte que je cherchais une fonctionnalité qui n'existait pas encore et la solution m'apparaissait de plus en plus évidente : il allait falloir créer une nouvelle extension !
La création du module Upcoming Articles
Créer un nouveau module pour Joomla est un processus qui s'est beaucoup simplifié ces dernières années car outre l'aide que peut apporter la Communauté, il existe aujourd'hui de très nombreuses ressources pour se lancer :
- la documentation officielle : https://docs.joomla.org/J3.x:Creating_a_simple_module/Developing_a_Basic_Module/fr,
- des tutoriels comme celui-ci Création d'un module Joomla,
- des vidéos comme celles-ci (en anglais) Basic Joomla Module Development video 1 et Basic Joomla Module Development video 2,
Alors certes, cela peut sembler intimidant pour beaucoup mais tant qu'on n'essaie pas, on est certain de ne pas réussir :) #ZoneDeConfort
Comme tous les autres modules Joomla, le module Upcoming Articles contient ces quatre fichiers de base :
-
mod_articles_upcoming.xml
- Ce fichier est le manifeste et il contient les informations de base du module : le nom de l'auteur, le nom du module, le Copyright, etc. Il définit quels sont les fichiers (index.php, helper.php et mod_articles_upcoming.php) et dossiers (tmpl, language) à installer et il spécifie les paramètres de configuration du module (le nombre d'articles à afficher, leurs catégories, la date, etc).
-
mod_articles_upcoming.php
- Ce fichier est le point d'entrée principale pour le module. Il va effectuer la routine d'initialisation nécessaire, appeler les routines helper pour collecter les données nécessaires et inclure le template à afficher pour le rendu du module.
-
helper.php
- Ce fichier contient la classe helper qui est utilisée pour procéder à la récupération des informations (ModArticlesUpcomingHelper) à afficher dans le module (à partir de la base de données, dans le cas présent).
-
tmpl/default.php
- Ce fichier est la vue (ou le template, si vous préférez) et il va utiliser les données recueillies par le fichiermod_articles_upcoming.php
pour générer le code HTML qui sera affiché sur la page. Si vous souhaitez modifier le rendu, c'est ce fichier que vous devez travailler.
Eh non, ce n'est pas encore fini...
Maintenant que le codage du module est terminé, il ne reste plus qu'à :
- tester le module afin de vérifier que tout se passe comme prévu, depuis l'installation de l'archive .zip jusqu'à l'affichage des articles et en passant par les traductions des chaines de langue, le format d'affichage de la date des articles, etc. La moindre erreur doit être éliminée.
- contrôler la conformité du module grâce au composant JED Checker qui permet de vérifier que l'extension répond parfaitement aux standards de qualité exigés par Joomla. Sans cette validation, il est impossible de publier une extension sur le Joomla Extension Directory,
- publier l'extension sur le Joomla Extensions Directory afin que le module soit accessible à tous les utilisateurs de Joomla,
- créer la page de l'extension sur mon site avec toutes les informations possibles pour les utilisateurs, créer le visuel, rédiger la documentation du module, etc.
- promouvoir l'extension afin qu'elle soit téléchargée le plus possible et pour recevoir des avis positifs de la part des utilisateurs,
- répondre aux utilisateurs qui m'envoient des mails pour demander de l'aide, même si dans le cas présent, le module est ultra simple à utiliser,
- envisager les améliorations probables à apporter à ce module en tenant compte des retours des utilisateurs et des évolutions (Joomla 4, par exemple).
Tim Davis dans son émission "Watch Me Work 084"
Conclusion
Comme vous pouvez le constater, créer une extension aussi simple comme celle-ci requiert pourtant de nombreuses heures de travail. Et pour le modeste développeur que je suis, c'est une énorme satisfaction de voir qu'elle est utile et appréciée.
N'hésitez pas à l'installer sur votre site Joomla et si vous l'appréciez, à poster un commentaire positif sur le Joomla Extensions Directory. Comme le module est gratuit, ce sera ma seule rémunération et cela ne vous coutera que quelques minutes de votre temps. Merci par avance !