Voici un exemple concret de hack transformé en plugin smarty.Afficher le nombre de visiteur par module dans le block "qui est en ligne".
Vous pouvez voir son fonctionnement sur mon site :
http://www.dugris.infoPour l’utilisation de ce plugin, il est nécessaire de corriger une partie du code de la fonction permettant l'affichage du block "qui est en ligne" :
1) Dans le fichier /modules/system/blocks/system_blocks.php
Remplacer la ligne 51
$online_handler->write($uid, $uname, time(), 0, $_SERVER['REMOTE_ADDR']);
par
$online_handler->write($uid, $uname, time(), 1, $_SERVER['REMOTE_ADDR']);
Car aucun module ne porte l’ID "0", "1" correspond au module system
2) Pour mettre la fonction en adéquation avec le plugin smarty
Dans le fichier /modules/system/blocks/system_blocks.php
Modifier la ligne 39
$online_handler->gc(300);
par
$online_handler->gc(60);
3) Ensuite pour un affichage simple du nombre de visiteur par module :
Ajouter dans le fichier /modules/system/templates/blocks/system_block_online.html
<{OnlineByModule}>
Les paramètres de configuration :
3.1.) Limiter le nombre de caractère à afficher pour le nom du module
<{OnlineByModule length=25}>
3.2.) Limiter l’affichage à une liste de module
La liste des modules correspond au nom des dossiers des modules
<{OnlineByModule modules="news|mydownload"}>
3.3.) Récupérer le résultat dans une variable smarty pour traiter celle-ci dans le template
<{OnlineByModule assign=onlinebymodule}>
foreach ($onlinebymodule as $bymodule ) {
echo $bymodule [‘module’] ; // retourne le nom du module
echo $bymodule [‘counter’] ; // retourne nombre de visiteur du module
}
Vous pouvez bien évidement cumulé les paramètres !
Par exemple : nombre de caractère limité à 15 pour les modules news, mydownload, edito, formulaire
<{OnlineByModule length=15 modules="news|mydownload|formulaire|edito"}>
Pour récupérer les mêmes paramètre dans la variable infoenligne
<{OnlineByModule length=15 modules="news|mydownload|formulaire|edito" assign=infoenligne}>