Aujourd'hui je vous propose un petit plugin qui me permet, dans mon cadre professionnel, de pouvoir taguer un élément d'une liste ayant le tag HTML <li> comme étant une archive. Dans notre cadre professionnel, nous appelons archives un élément que nous devons mettre à disposition de nos utilisateurs, tout en leur mentionnant que ce document risque d'être caduque.
Pour ceci, une simple expression rationnelle derrière un plugin permet de transformer une balise HTML5 data-archive en un style bien particulier de type archives. En d'autres termes nous avons remplacer mon data type en une simple classe.
ATTENTION : n'étant pas sur que la nome HTML5 sur data-* accepte une propriété vide, j'ai utilisé le "tag" data-archive="oui" mais si la norme HTML5 l'acceptait, on aurait simplement pu mettre data-archive.
Analyse
Je reviens toutefois sur la manière de procéder. En effet, je pars du principe que la balise data-* que je vais utiliser que dans le cadre Joomla pour pouvoir spécifier qu'un élément est de type archives ou non. Bien entendu, dans mon plugin, il est possible de modifier ma substitution afin de rajouter une classe css pour appliquer un stle particuler à ces données (je suis tres friand des icones UTF-8, ça pase partout puisque je maitrise les navigateurs qui se connecte à mon Joomla).
Dans le code que je vous fournies, vous verrez donc deux variables "subst", une remplaçant ou autre en ligne 13 du fichier php. En effet, la première ligne permet simplement de faire un remplacement de la donnée data-*, la deuxième ligne garde la donnée data mais rajoute en plus une classe. Dans mon cas, je rajoute une class archive avec un S, libre à vous de choisir la classe que vous souhaitez en ligne 13 du plugin
dataarchives.php
<?php
defined('_JEXEC') or die('Access deny');
class plgContentDataarchives extends JPlugin
{
function onContentPrepare($content, $article, $params, $limit){
$document = JFactory::getDocument();
$document->addStyleSheet('plugins/content/dataarchives/style.css');
//ici si on ne veux que faire un remplacement
$subst = "class=\"archives-MonOrganisationEmployeur\"";
//ici si on veux garder la data-archive comme metadonnées
$subst = "$1 class=\"archives-MonOrganisationEmployeur
\""; $re = '/(data-archive.*=.*"oui")|(data-archive.*=.*\'oui\')/m'; $article->text = preg_replace($re, $subst, $article->text); } }
dataarchives.xml
<?xml version="1.0" encoding="utf-8"?>
<extension version="1.0" type="plugin" group="Content">
<name>Archives</name>
<author>Sebastien LHUILLIER</author>
<creationDate>Novembre 2023</creationDate>
<copyright>Sébastien LHUILLIER</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<authorEmail>Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.</authorEmail>
<authorUrl>www.sebastien-lhuillier.com</authorUrl>
<version>1.0</version>
<description>Ce plugin ajoute une icone lorsqu'un lien est taggé data-archive="oui"</description>
<files>
<filename plugin="dataarchives">dataarchives.php</filename>
<filename>dataarchives.xml</filename>
</files>
</extension>