Articles au hasard: pour suggérer la lecture d'autres articles à vos visiteurs ( PluXml )
Installer des ' suggestions de lecture ' ou la fonction ' articles au hasard ', sous PluXml est chose plus facile et beaucoup plus simple que l'on ne pourrait le penser ...
Cette possibilité est fort pratique et très facile à installer.
Il ne s'agit nullement de mettre en place une autre sorte de ' linking interne ', mais bel et bien de placer quelques lignes, destinée à inviter les visiteurs à lire d'autres articles déjà en ligne, d'autres articles déjà publiés.
Tout se passe en ' PHP ', mais si vous ne le maîtrisez pas, aucun soucis, il ne vous reste juste qu'à prendre ce qui se trouve ci-dessous ;)
Comment installer les suggestions de lecture.
Pour ce faire, il vous faut créer un fichier ' suggestions.php ' que vous placerez au même niveau que les autres fichiers de votre thème, fichier dont vous trouverez le code ci-dessous. Il ne vous restera ensuite qu'à en paramétrer l'affichage et à le mettre en fonction via une simple petite ligne de code placée dans votre fichier ' article.php ' ou ' sidebar.php ', enfin ... là où vous désirez qu'elles s'affichent.Paramètres des suggestions.
Les paramètres pour modifier le fichier et l'affichage du nombre de suggestions de lecture sont très simples :- vous pouvez changer le nombre de liens affichés, via la variable " $max = 5 " ( lignes 12 et 99 ), qui va dans ce cas afficher 5 articles à lire ...
- vous pouvez également changer le nombre de caractères inscrits dans chaque lien, via la variable ' $maxSeek = 350 ' qui donne le nombre maximum de ces caractères ( lignes 12 et 99 ) ...
- si vous désirez aller encore plus loin, " $cat_id = '' " vous permet par exemple d'imposer des suggestions vers les articles d'une catégorie définie, ainsi que d'autres changements qui seront plutôt là réservés aux ' codeurs ' ...
Le code du fichier suggestions.php
Faire un copier/coller, via notepad++, par exemple et sauvegarder ce fichier au même niveau que tous les autres fichiers de votre thème actuel. ( il est ici livré brut de coffrage avec les différents commentaires )<?php
/**
* Méthode qui affiche une liste d'articles au hasard dans la même catégorie.
*
* @param max nombre d'articles maximum affichés
* @param cat_id id de la catégorie cible (1,home)
* @param maxSeek nombres d'articles les plus rescents à parser
* @param exclude id de l'article à exclure
* @return stdout
* @author Amaury GRAILLAT, Florent MONTHEL
**/
function suggestion ($max = 5, $cat_id = '', $maxSeek = 350, $exclude = -1)
{
# Récupération des instances :
$plxShow_inst = plxShow::getInstance();
$plxMotor_inst = plxMotor::getInstance();
#Génération de notre motif
if (empty ($cat_id))
$motif = '/[0-9]{4}.[0-9,]*.[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/';
elseif ($cat_id == 'home')
$motif = '/[0-9]{4}.(home[0-9,]*).[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/';
else
$motif = '/[0-9]{4}.[0-9,]*'.str_pad ($cat_id, 3, '0', STR_PAD_LEFT).'[0-9,]*.[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/';
#Nouvel objet plxGlob et récupération des fichiers
$plxGlob_arts = plxGlob::getInstance(PLX_ROOT.$plxShow_inst->plxMotor->aConf['racine_articles']);
$aFiles = $plxGlob_arts->query ($motif, 'art', 'rsort', 0, $maxSeek, 'before');
#On parse les fichiers
if (is_array ($aFiles))
{
#On a des fichiers
foreach ($aFiles as $v)
{
#On parcourt tous les fichiers
$array[] = $plxShow_inst->plxMotor->parseArticle (PLX_ROOT.$plxShow_inst->plxMotor-> aConf['racine_articles'].$v);
#On stocke les enregistrements dans un objet plxRecord
$plxRecord_arts = new plxRecord ($array);
}
}
if ($plxGlob_arts->count AND $plxRecord_arts->size)
{
#On a des articles
//Pas plus qu'on en a...
if ($maxSeek > $plxGlob_arts->count)
$maxPars = $plxGlob_arts->count - 1;
else
$maxPars = $maxSeek - 1;
if ($max > $maxPars)
$max = $maxPars;
#On boucle sur nos articles
$used = array ();
$loop = 0;
while ($loop < $max)
{
for ($antilag = 0; $antilag < $maxPars * 2; $antilag++)
{
$plxRecord_arts->i = rand (1, $maxPars);
if (!$used[$plxRecord_arts->i])
{
$used[$plxRecord_arts->i] = true;
break;
}
}
$num = intval ($plxRecord_arts->f ('numero'));
if ($num != $exclude && $antilag < $maxPars * 2) //Si l'article n'est pas exclu, on l'affiche
{
#On genère notre ligne
$row = '<a href="'.'./?article'.$num.'/'.$plxRecord_arts->f ('url').'">'.htmlspecialchars ($plxRecord_arts->f ('title'),ENT_QUOTES, PLX_CHARSET).'</a>';
echo '<li>'.$row.'</li>';
$loop++;
}
else $loop += 0.1; // Système antilag, mais évite quand même d'afficher
// que 4 titres au lieu de 5 quand on a trouvé un exclu. J'assume.
}
}
}
$plxShow_inst = plxShow::getInstance();
$plxMotor_inst = plxMotor::getInstance();
$artId = $plxMotor_inst->plxRecord_arts->f ('numero'); //cet article
// Gestion du multi-catégorie : prend une des catégories au hasard.
$catIdSel = $plxMotor_inst->plxRecord_arts->f ('categorie');
$catIdSel = explode (',', $catIdSel);
$catIdSel = array_rand ($catIdSel);
suggestion (5, $catIdSel, 350, $artId);
?>
Mise en fonction de son affichage.
Placez ceci:<p>autres articles à lire :</p>là où vous désirez que vos liens soient affichés ...
<ul>
<?php include(dirname(__FILE__).'/suggestion.php'); ?>
</ul>
Et hop, le tour est joué !
Vous pouvez le voir en 'action' ici plus bas, vos visiteurs auront donc à chaque passage, dans chaque, une petit plus qui les invitera à aller lire d'autres articles de votre site, des liens générés aléatoirement et qui ne seront jamais les mêmes, intéressant pour leur faire découvrir ce qu'ils n'auraient peut-être pas pensé à aller lire ;)
autres articles à lire :