Je vous propose aujourd'hui un petit réglage sur le composant de recherche en AJAX, RokAjaxSearch de RocketTheme.
Cet outil ayant la particularité d'être gratuit, nous utilisons dans notre cadre professionnel. Cependant, je me suis heurté à une problématique relativement simple, je souhaitais que certains résultats apparaissent dans les résultats de recherche de cet outil, alors que d'autres restent masqués. Et lorsque je parle de résultats, je parle bien d'articles Joomla Content.
Propriétés de l'outil
En lisant la documentation de cet outil (oui oui vous avez bien lu, je lis la doc !), j'ai vu que nous pouvons rejeter certains articles dans les résultats de recherche, en spécifiant dans les article le mode de rejet au moyen de <span id="UnId"> . Pour cela, j'ai simplement spécifier dans chacun de mes articles un span avec un id, qui va refouler le résultat dans sa zone de recherche. En effet, si je définis un ID "masque-fiche", avec le nom de la catégorie dans le span, et que je spécifie dans la configuration de cet outil de rejeter le contenu sur les noms de catégorie, en d'autres termes rejeter le contenu sur les ID "masque-fiche", les résultats n'apparaîtront plus.
Pour aller encore plus loin, j'ai même écrit un minuscule qui va fabriquer l'ensemble du span spécifique, simplement au moyen d'un shortcode. Cet outil est facultatif car vous n'avez qu'un span à écrire, dans la mesure où ce dernier doit contenir une chaîne de caractère rejeté. J'ai tenté de faire la même chose avec Re-remplacer car je pensais trouver un champs de Joomla Content (les fields que l'ont retrouve dans JCE par exemple) "catégorie" mais je nl'ai aps trouvé...
Dans mon cas, je souhaite rejeter les résultats sur les catégories des articles. J'ai donc écrit un petit plugin qui va rechercher pour un article spécifique, le nom de la catégorie à l'accueil est rattaché point de ce fait, sur l'ensemble du site, chaque article va contenir au minimum une catégorie, say I accueil mon article est associer. De ce fait, toutes les catégories vont apparaître dans mes spams. Ainsi, dans l'outil de recherche rok, nous ne retrouverons plus jamais une ou l'autre catégorie. Le plugin va jouer le rôle de remplacement
Le Plugin
masquerokresults.php
<?php
defined('_JEXEC') or die ('Acces interdit');
use Joomla\CMS\Factory;
class plgContentMasqueRokResults extends JPlugin{
function onContentPrepare($content, $article, $params, $limit)
{
$re = '{masque-recherche-rok}';
$active = JFactory::getApplication()->getMenu()->getActive();
$ch_plugin = '<span id="masque-fiche- masque-fiche-'.$article->id.'">'.$article->category_title.$article->id.'</span>';
$article->text = str_replace('{masque-recherche-rok}',$ch_plugin,$article->text);
}
}
?>
masquerokresults.xml
<?xml version="1.0" encoding="utf-8"?>
<extension version="1.0" type="plugin" group="Content">
<name>Mask Rok Ajax Search Results</name>
<author>Sebastien LHUILLIER</author>
<creationDate>Janvier 2024</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 permet de spécifier dans un article que RokAajxSearch d'affiche pas cet article dans les résultats</description>
<files>
<filename plugin="masquerokresults">masquerokresults.php</filename>
<filename>masquerokresults.xml</filename>
</files>
<config>
<fields name="params">
<fieldset name="basic">
<field name="note21" type="note" class="alert" label="Tag" description="Ajouter dans l'article le tag {masque-recherche-rok} pour que cet article n'apparaisse plus dans Rok Ajax Search" />
</fieldset>
</fields>
</config>
</extension>