PROJET AUTOBLOG


refOK, référencer votre site ou blog sur Internet

Site original : refOK, référencer votre site ou blog sur Internet

⇐ retour index

Articles au hasard: pour suggérer la lecture d'autres articles à vos visiteurs ( PluXml )

mardi 1 juillet 2014 à 10:59
Pour les 'articles au hasard',si vous utiliser PluXml, vous pouvez facilement suggérer à vos visiteurs d'autres articles à lire sur votre site, comme il est fait et affiché ici, en bas de page. Juste un fichier à créer et un ' bout de code ' à intégrer dans votre thème et le tour est joué ...
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>
                   <ul>
    <?php include(dirname(__FILE__).'/suggestion.php'); ?>
    </ul>
là où vous désirez que vos liens soient affichés ...
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 ;)

© refOK by refok.fr - duplication interdite