Dans le cadre de mon projet, je dois présenter des informations issues de mes articles jumia, sous une forme spécifique dans laquelle je retrouve le nom de l'article et quelques autres informations bien spécifiques. Mon problème est le suivant, le jour où je vais devoir changer et à présentation dans cette partie de mon site, si je m'en tiens à du jumia purée dur, je vais devoir reprendre l'ensemble de mes articles afin de changer éventuel structure HTML.
C'est simplement pour cette raison que j'ai créé ce petit plugin titre, dans lequel je vais passer deux paramètres : l'id de l'article et l'url d'une photo qui caractérise spécifiquement mon article. Je ne travaille pas sur le champ photo qui est contenu dans l'article de base, j'aurais pu mais nous avons choisi la flexibilité pour pouvoir corriger rapidement en cas de besoin certaines informations, certaines photographies.
Fonctionnement
Ce plugin s'appelle de la manière suivante :
{titre 4027 photos/mou.jpg}
Lors de appel sous la forme précédente, mon petit plugin va écrire le code HTML suivant :
<!-- Un matériel -->
<div class="un-materiel">
<div class="titre">
<a href="/index.php/?view=article&id=2000">Titre de l'article</a>
</div>
<div class=\"photo-materiel\">
<!-- <img src="/une-image.jpg"> -->
</div>
</div>
Ce plugin se comporte donc comme un petit outil qui va reproduire un modèle, mais dont deux paramètres sont variables.
titre.php
<?php
defined('_JEXEC') or die('Access deny');
class plgContentTitre extends JPlugin
{
function onContentPrepare($content, $article, $params, $limit){
$re = '/{titre\s*?(.*) \s*?(.*)\s*}/m';
$subst = "<!-- Un matériel -->\r\n<div class=\"un-materiel\">\r\n\t<div class=\"titre\">\r\n\t\t<a href=\"index.php/?view=article&id=$2\">\r\n\t\t\t".$article->title."\r\n\t\t</a>\r\n\t</div>\r\n\t<div class=\"photo-materiel\">\r\n\t\t<!-- <img src=\"$2\"> -->\r\n\t</div>\r\n</div>";
$article->text = preg_replace($re, $subst, $article->text);
}
}
titre.xml
<?xml version="1.0" encoding="utf-8"?>
<extension version="1.0" type="plugin" group="Content">
<name>Titre</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><![CDATA[Affiche le titre de l'article et son lien {<span style="color:red;">titre</span> <span style="color:blue;">50</span> <span style="color:green;">urlphorto/kj.jpg</span>}</span>]]></description>
<files>
<filename plugin="titre">titre.php</filename>
<filename>titre.xml</filename>
</files>
</extension>