Le besoin spécifique

Aujourd'hui, je vais vous présenter dans cet article, un moyen purement théorique, qui permet de relier deux éléments de 2 articles Joomla content différents, au travers d'un plugin. En d'autres termes, nous avons fait de la simulation !

En effet, le besoin spécifique est le suivant : dans le cadre de mes fonctions professionnelles, gérant de la documentation, nous avons pour certains types de documents, la nécessité de relier entre eux deux fichiers de type PDF, sans que le besoin spécifique de téléchargement de chacun de ces fichiers ne soit fondamentalement différent, ces deux fichiers devant être téléchargeables. En terme de fonctionnement, nous allons parler de simulation. Nous allons simuler une relation de type 1 N que nous pourrions retrouver dans une base de données relationnelle.

Principe de fonctionnement

Le principe de fonctionnement est relativement simple, et je l'ai adapté à l'utilisation de ce plugin, concept propre à Joomla.

Ce plugin s'utilise ainsi :

{associer_spec_CH dossier_spec:"URL_DOCUMENT1:"__DOCUMENTS__/CH.pdf" dossier_homologation:"URL_document_2" libelle-lien-homologation:"libelle du lien homologation 1" libelle-lien-specification:"libelle du lien 1" Auteur:"Auteur1" poids:"204Mo" date_fic:"2023-10-14" date_debut:"2021-06-08" duree:"10 ans"}

J'ai surligné en jaune les "nom des champs" utilisé dans le plugn (ce n'est pas véritablement des champs, mais plus des paramètre. Comme on est quand même proche de la base de données, on pourrait dénommer ces valeurs "champs")

Pour rappel un plugin est un élément de Joomla qui va réagir sur un événement. En l'occurrence ici, mon plugin va réagir à la préparation de la page, d'où l'utilisation dans le code de l'événement onContentPrepare. Je vous laisse bien entendu le soin d'aller lire et à documentation de cet événement, mais en deux mots, il se déclenche pendant le processus de création de contenu, pendant donc la formation de la page que vous allez avoir sous vos yeux.

Et la notion de page est importante, car l'événement n'est pas relié au contenu de l'article même, mais vraiment au chargement de la page si j'ai bien compris la documentation. Ainsi, sauf erreur de compréhension de la documentation, le plugin va récupérer le contenu de la page, rechercher l'ensemble des expressions rationnelles qui correspondent à ce que je souhaite remplacer, et afficher une réponse HTML modifiée par mes soins.

Paramètres de configuration dans la console d'administration de Joomla

Dans la console de configuration du plugin, ayant une mémoire relativement souvent défaillante, j'ai simplement créé un champ de type note, dans lequel j'affiche la ligne de commande, ou plutôt "la ligne de plugin" que nous devons utiliser dans nos articles, afin de pouvoir utiliser correctement ce plugin.

En effet, je compte désormais intégrer cette documentation d'utilisation de mes outils à cet endroit désormais . Je ne rentre pas dans le détail, il suffit de lire le code.

Toutefois, je vous affiche comment j'utilise pour ce cas précis :

{associer_spec_CH dossier_spec:"__DOCUMENTS__/Specification.pdf" dossier_homologation:"__DOCUMENTS__/CH.pdf" libelle-lien-homologation:"libelle du lien homologation 1" libelle-lien-specification:"libelle du lien 1" Auteur:"Auteur1" poids:"204Mo" date_fic:"2023-10-14" date_debut:"2021-06-08" duree:"10 ans"}

Note au puristes : OUI il y a bien une redondance d'informations qu'il ne faudrait pas faire. En effet le couple (date de debut + date de fin) permet d'en déduire la durée. Je sais, mais nous ne sommes pas, avec ma casquette de documentaliste, dans un cadre stricte de SGBD.Mais je suis conscient de la redondance. Nous sommes dans un cadre d'affichage de données, pas de stockage de donnéées.

Notons toutefois une information importante : vous remarquerez que dans ma ligne de commande, j'encadre chacune des données entre double cote. Ces données encadrées sont précédées par une chaîne de caractère qui spécifie ce que l'on définit. J'ai cherché relativement longuement un formalisme clair et objectif, j'ai regardé ce que faisait d'autres personnes, et je me suis rendu compte que l'association définition, deux points, l'encadrement entre double cote, permet au niveau de mes expressions rationnelles, de faire des recherches relativement simples. C'est la raison pour laquelle, l'orthographe de ma commande est, je pense, textuellement complexe, mais logiquement très simple. Nous nous rapprochons ainsi de nos anciens fichiers ini, qui reprenaient grosso modo une syntaxe similaire, sauf que ces fichiers en plus permettait de classer les commandes par grandes catégories. Vous vous souvenez des crochets ?

Le petit plus

Ce plugin est écrit dans l'optique d'une réutilisation ultérieure beaucoup plus complexe.

En effet, après le parcours de ensemble de mes articles Joomla, je vais aller rechercher les informations qui sont stockées dans les tags spécifiques utilisés par ce plugin. L'idée est relativement simple, c'est de pouvoir générer une sorte de tableau, avec éventuellement un tri chronologique par champ de type Date dans mes données, pour pouvoir afficher à l'utilisateur qui le souhaite, en l'occurrence ici et administrateur Joomla, l'ensemble de mes informations qui arrivent à péremption.

Ce modèle n'est encore pas écrit, il risque d'être relativement un peu plus complexe dans la mesure où les informations stockées dans Joomla sont au format textuel, or pour faire ce genre de tri nous allons devoir transformer toutes ces informations stockées dans le fichier dans un format de type Date, afin de pouvoir réaliser des tri chronologiques. Affaire à suivre...

Mon Github

slhuilli1's GitHub repositories