Je vous propose cette semaine un petit plugin que j'ai intitulé hits.
L'idée de départ de ce projet et de pouvoir afficher à mes utilisateurs, des informations statistiques sur la visualisation de mes articles sur mon site.
Ce plugin est véritablement simple sur le plan véritablement technique. En effet, il interroge la base de données des articles Joomla afin de pouvoir en extraire le titre des articles ainsi que le nombre de vues de chacun de ceux-ci.
Dans les paramètres de ce plugin, vous avez la possibilité de limiter à un nombre de résultats. Ce nombre doit être défini par défaut, dans le fichier XML, vous pouvez voir sur la ligne 20 que j'ai défini ce nombre à 5. Si vous êtes un simple utilisateur, bien entendu, vous pouvez redéfinir ce nombre dans la console d'administration du plugin.
Principe
Le principe d'utilisation de cet outil est véritablement simple. Il repose sur Joomla Content, et cet outil va tout simplement lancer une requête SQL qui va rechercher les articles en extrayant leur titre, ainsi que le nombre de vues, ces articles sont triés par nombre de vues, Les résultats sont limités par la valeur que vous avez spécifiée dans la console d'administration de Joomla (j'ai corrigé dans le source, la faute d'orthographe ci-dessous)
.
Comme nous sommes bien sûr un plugin, et que ce plugin est relié à un tag spécifique pour pouvoir réactiver, j'ai choisi un simple tag ouvrant sans tag fermant : {hits}
Vous pouvez donc placer votre tag ou bon vous semble, vous pouvez même, mais cela reste une idée, intégrer votre tag dans un module que vous pouvez redéfinir comme vous souhaitez dans votre Joomla. Ainsi mon plugin sera transformé en module.
Comme à mon habitude, je vous fournis le code mais bien entendu le fichier XML associé dans lequel vous pourrez tout personnaliser.
Si vous réutilisez ce plugin et que vous retouchez le CSS, je reste oubert à la publication de vos oeuvres ici même. Contactez moi par le formulaire de contact pour que je publie vos fichiers modifiés
Résultat obtenu
hits.php
<?php
defined('_JEXEC') or die('Access deny');
class plgContentHits extends JPlugin
{
function onContentPrepare($content, $article, $params, $limit){
$document = JFactory::getDocument();
$document->addStyleSheet('plugins/content/hits/style.css');
$param = $this->params->get('maximum', defaultValue);
$sql = "select title, hits from #__content ORDER by #__content.hits DESC limit 1,".$param;
echo $sql;
$db= JFactory::getDBO();
$db->setQuery($sql);
$results = $db->loadObjectList();
$subst = '<ul class="liste-hits">';
foreach($results as $O)
{
$subst.= '<li><span class="titre">'.$O->title.'</span> : <span class="hits">'.$O->hits.'</span></li>';
}
$subst .= "</ul>";
$re = '/{hits}/m';
$article->text = preg_replace($re, $subst, $article->text);
}
}
?>
hits.xml
<?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="Content">
<name>Hits</name>
<author>Sebastien LHUILLIER</author>
<creationDate>Janvier 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>Affiche les stats des meilleurs articles</description>
<files>
<filename plugin="hits">hits.php</filename>
<filename>hits.xml</filename>
<filename>style.css</filename>
</files>
<config>
<fields name="params">
<fieldset name="basic">
<field name="maximum" type="text" default="5" label="Nombre maxi de resultats" description="" size="10" />
</fieldset>
</fields>
</config>
</extension>