Liste des billets par ordre alphabétique

19/08/2010
Un utilisateur Blogger de passage m'a demandé s'il était possible d'adapter le gadget affichant les derniers billets postés, pour afficher la liste des billets publiés mais dans l'ordre alphabétique cette fois.

Voici comment faire.


Je publie ci-dessous le code complet, accompagné de plusieurs remarques :
  • Ce gadget peut être utilisé comme un gadget (normal me direz-vous), mais aussi dans un billet et notamment dans une page statique. Ainsi, vous pouvez vous en servir comme index alphabétique de vos billets, comme sur cette page de démo listant les billets publiés sur PourBlogger.

    Pour vous en servir comme gadget, copiez le code dans un gadget de type HTML/Javascript

    Pour vous en servir dans une page, copiez le code ci-dessous en mode "Modifier le code HTML" dans l'éditeur de billets.
  • Le gadget ne fonctionne qu'avec moins de 500 billets. Si besoin, je verrais ce que je peux faire pour gérer des blogs de plus forte capacité.
  • J'ai codé rapidement ce gadget, il est possible que quelques bugs s'y cachent, ne m'en voulez pas :)

<script type="text/javascript">
function suppaccent(chaine)
{
  ch = chaine.replace(/[àâä]/gi,"a")
  ch = ch.replace(/[éèêë]/gi,"e")
  ch = ch.replace(/[îï]/gi,"i")
  ch = ch.replace(/[ôö]/gi,"o")
  ch = ch.replace(/[ùûü]/gi,"u")
  return ch;
}

function tri_alpha (a, b)
{
  var titreA=suppaccent(a.titre.toLowerCase()), titreB=suppaccent(b.titre.toLowerCase());

  if (titreA < titreB)  return -1;
  if (titreA > titreB) return 1;
  return 0;
}

function afficheTousBillets(json)
{
  var tabbillet = [];
  nb_billets = json.feed.entry.length;
  for (var i = 0; i < nb_billets; i++)
  {
    var entry = json.feed.entry[i]; 
    // Titre
    var billet_titre = entry.title.$t;
    // URL du billet
    var billet_url;

    for (var j = 0; j < entry.link.length; j++)
    {
      if (entry.link[j].rel == 'alternate')
      {
        billet_url = entry.link[j].href;
        break;
      }
    }
    tabbillet[i]={titre:billet_titre, url:billet_url};
  }
  tabbillet = tabbillet.sort(tri_alpha);

  for (var i = 0; i < nb_billets; i++)
  {
    if(i==0) document.write('<ul>');
    document.write('<li><a href="'+ tabbillet[i].url+'">'+ tabbillet[i].titre + '<\/a><\/li>');
    if(i == nb_billets-1) document.write('<\/ul>');
  }
}
</script>
<script src="/feeds/posts/default?alt=json-in-script&callback=afficheTousBillets&max-results=500">
</script>

3 commentaires:

Rayon Bleu a dit…

Script très intéressant. Si on change le results=500 par results=1000,tu dis que ça ne marche pas après 500 posts ?

Merci en tout cas !
http://rayonbleu.blogspot.com

Jimmy a dit…

Aux dernières nouvelles, les flux RSS/Atom générés par Blogger étaient limité à 500 billets, d'où la limitation dans ce programme.

Ceci dit, je n'ai pas de blog dépassant les 500 donc je ne peux tester si cette limite est encore d'actualité.

Vidéale a dit…

Voici une astuce que je cherchais depuis longtemps sans jamais trouver. Le résultat est vraiment super mais je rencontre un problème que je n'arrive pas à résoudre. Quand je copie le code dans une page (côté "modifier le code html"), je fais un aperçu avant l'enregistrement, la liste s'affiche bien. Mais une fois que j'enregistre la page, il n'y a plus que le titre et la liste n'apparaît plus que ce soit quand j'affiche la page ou l'aperçu. Auriez-vous une idée pour régler mon problème ?
Merci

Enregistrer un commentaire

Contact

Nom

E-mail *

Message *