Citations aléatoires extraites d’un article

Extraire aléatoirement un des paragraphes d’un article donné et l’afficher en ligne grace à un filtre.

Si vous avez un article spécifique (nommé ici citations) ou chaque citation est un paragraphe [1] de moins de 200 caractères recopiez cette boucle dans votre squelette :

<BOUCLE_citations(ARTICLES) {titre==citations} {0,1}>
[(#TEXTE|citations)]
</BOUCLE_citations>

Evidemment il vous faut le bon filtre ! mettez dans squelettes/mes_fonctions.php

function citations($txt){
$BDDArray = $txt;// Lecture de l'article
$BDDArray = explode('<p>', $BDDArray); // couper à la  rencontre un p
$BDDArray = array_map('rtrim', $BDDArray); // Suppression des fins de lignes de chaque élément
$BDDArray = array_filter($BDDArray); // Suppression de TOUTES les entrées vides

$citation = $BDDArray[array_rand($BDDArray)]; // une phrase au hasard dans le tableau
if(strlen($citation)<200) //on ne veut pas dépasser 200 caractères
return strip_tags($citation); //on vire les tags html
else citations($txt);
}

Plus simple qu’un gros plugin :)

Adapté d’un code trouvé sur le forum SPIP,
merci à l’auteur.

Notes

[1Pour créer un paragraphe à la rédaction de votre article, laissez simplement une ligne vide.

Libre à vous d’adapter ce bout de code, car comme Maïeul me le faisait remarquer « personnellement je préfère faire une rubrique "citation" et en tirer une citation aléatoire (cela permet d’avoir des citations sur plusieurs paragraphes) »

Il suffirait par exemple de remplacer

$BDDArray = explode('<p>', $BDDArray); // couper à la  rencontre un p

en mettant en commentaire

#if(strlen($citation)<200)

par

$BDDArray = explode('<h3>', $BDDArray); // couper à la  rencontre d'un h3

en ayant pris soin de rédiger chaque citation précédé d’un joli {{{intertitre h3}}}

Dernière modification de cette page le 30 décembre 2010

Discussion

5 discussions

  • eh bien c’est toujours d’actualité même en Spip 3

    @micalement

    Répondre à ce message

  • Bonjour

    J’ai testé ce squelette sur un site avec spip 2.1.10, ça ne marche pas car le filtre pose problème, j’ai un message d’erreur dans l’admin. Etes-vous sûr qu’il est compatible avec spip 2.1 ?

    Répondre à ce message

  • 1

    Bonjour

    Merci pour l’adaptation de ce code.

    Pensez-vous qu’il soit possible de disposer d’une nouvelle phrase à chaque changement d’article ?

    Actuellement, la citation change à chaque vidage de cache.

    Cordialement

    Jean-Michel

    • Bonjour

      Suite à ma question d’hier, je me demandais si la raison de « 1 phrase par jour » n’était pas de conserver une bonne rapidité d’affichage au site.

      Si c’est le cas, serait il possible de programmer la chose suivante : la phrase affichée est celle du N° fourni par le array_rand + le numéro de l’article consulté (et comment faire ?)

      Cordialement

      Jean-Michel

    Répondre à ce message

  • Alexandra

    Super Echo !
    Comme on en a parlé à l’apéro, j’ai adopté. Redoutable de simplicité et d’efficacité. Merci pour ce joli filtre alexandra

    Répondre à ce message

  • Voici un exemple d’utilisation sur le site http://universitevignevin.fr/ en bas de page vous pouvez voir une citation aléatoire s’afficher.

    La citation est actualisée à chaque nouvelle mise en cache, c-a-d toutes les 24h.

    L’article dont sont extraites les citations est le 30, mais c’est un article ’caché’ !

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom