Je viens d’avoir exactement la même problématique : besoin de créer une boucle d’articles classés par nombre inverse de commentaires. Du coup je partage :)
Je me suis inspiré de cette discussion : http://comments.gmane.org/gmane.comp.web.spip.devel/59465
donc pas à pas, ça donne ça :
1) modifier ou créer le fichier mes_options.php et y ajouter ces deux fonctions :
function spip_asort ($tableau) { // pour trier un tableau dans le sens alphabétique
asort ($tableau);
return $tableau;
}
function spip_arsort ($tableau) { // pour trier un tableau dans le sens alphabétique inversé
arsort ($tableau);
return $tableau;
}
2) créér le tableau qui va répertorier pour chaque article le nombre de commentaires liés.
#SET{articles_forums,#ARRAY}
<BOUCLE_tous_les_articles(ARTICLES)>
<BOUCLE_forums(FORUMS){id_article}>
</BOUCLE_forums>
[(#SET{articles_forums, #GET{articles_forums}|array_merge{#ARRAY{#TOTAL_BOUCLE,#ID_ARTICLE}}})]
</B_forums>
</BOUCLE_tous_les_articles>
3) trier ce tableau dans le sens voulu (asort = du plus petit au plus grand, arsort = du plus grand au plus petit)
[(#GET{articles_forums}|spip_arsort)]
4) Il ne reste plus qu’à créer la boucle articles qui sera triée dans l’ordre du tableau, ce qui donne quelque chose comme ça :
<BOUCLE_articles(ARTICLES){id_article IN #GET{articles_forums}}>
</BOUCLE_articles>
En espérant que cela pourra être utile à d’autres que moi :)