Classer les articles par nombre de commentaires - comments Classer les articles par nombre de commentaires 2019-03-03T19:44:02Z https://files.spip.org/Classer-les-articles-par-nombre-de-commentaires#comment500241 2019-03-03T19:44:02Z <p>Certes, le compteur intégré au plugin Bonux est utile lorsqu'on veut connaître la totalité des articles, tous statuts confondus - ce qui en pratique, est -relativement - peu usité. On souhaite plutôt connaître, en l'occurrence pour les articles, le nombre d'articles en fonction de leur statut. Un chiffre global simple n'a que peu d'intérêt et serait facilement récupérable en faisant la somme (via le filtre |plus<i>...</i>) tandis que l'inverse est impossible. Si vous pouviez améliorer la méthode de génération du compteur Bonus ce serait super - sinon, il nous faut bidouiller avec les fonctions. Je comprends que le compteur dépend de la rubrique (lorsqu'il est associé à une boucle RUBRIQUES), qui acquiert le statut “publie” dès le premier article est publié. L'amélioration du compteur nécessite sans doute beaucoup de temps de développement, je n'en doute pas.</p> Classer les articles par nombre de commentaires 2014-07-19T08:09:54Z https://files.spip.org/Classer-les-articles-par-nombre-de-commentaires#comment476251 2014-07-19T08:09:54Z <p>pour infos, le plugin <a href='https://files.spip.org/SPIP-Bonux' class="spip_in" hreflang="fr" rel='nofollow'>SPIP Bonux</a> intègre maintenant le critère <i>compteur</i>. (disponible pour SPIP 2 et 3).</p> <p>Inutile d'avoir à ajouter des choses dans le mes_fonctions.php</p> Classer les articles par nombre de commentaires 2011-11-01T09:41:02Z https://files.spip.org/Classer-les-articles-par-nombre-de-commentaires#comment451402 2011-11-01T09:41:02Z <p>Bonjour</p> <p>Je viens d'essayer ce script (celui proposé dans le commentaire par Cédric) qui fonctionne parfaitement avec un Spip 2 mais qui ne retourne aucun résultat en Spip3</p> <p>Une subtilité de Spip3 que je n'aurais pas capté ?</p> Classer les articles par nombre de commentaires 2010-04-21T10:56:05Z https://files.spip.org/Classer-les-articles-par-nombre-de-commentaires#comment429625 2010-04-21T10:56:05Z <p>Bonjour<br class="autobr" /> Souhaitant classer les auteurs en fonction du nombre d'article j'ai voulu reprendre ta fonction Cedric, mais elle ne fonctionne pas de mon côté !<br class="autobr" /> Ça me renvoie une erreur concernant la ligne</p> <div class="precode"><pre dir="ltr" style="text-align: left;" class="spip"><code> $type = objet_type($table);</code></pre></div> <p>Pour info il s'agit d'une installation sur une version spip 1.9.1 (pas mise à jour à cause de beaucoup de modifs et pas mal de fainéantise surtout)</p> Classer les articles par nombre de commentaires 2010-02-11T00:18:34Z https://files.spip.org/Classer-les-articles-par-nombre-de-commentaires#comment426287 2010-02-11T00:18:34Z <p>Très bon boulot !<br class="manualbr" />Cependant, attention aux jointures forcées (<a href="http://programmer.spip.org/Forcer-des-jointures" class="spip_out" rel='nofollow external'>cf. doc</a>) ; il faut bien spécifier la table du champ de calcul, sinon, (sauf erreur de ma part) ça supprime une des tables défini.<br class="manualbr" />Par exemple, faire un équivalent SPIP de cette simple requête SQL (requête comptant le nombre d'article associés à chaque mot clé, trié par ce comptage décroissant) :</p> <div class="precode"><pre dir="ltr" style="text-align: left;"><code>SELECT titre, count(id_article) as nombre_articles FROM spip_mots_articles NATURAL JOIN spip_mots GROUP BY titre ORDER BY nombre_articles DESC</code></pre></div> <p>SPIP :</p> <div class="precode"><pre dir="ltr" style="text-align: left;"><code><BOUCLE_test(MOTS_ARTICLES mots){fusion titre}{!par nombre_articles}> #TITRE : [(#EXPRESSION{COUNT(mots_articles.id_article), nombre_articles})]<br/> </BOUCLE_test></code></pre></div> <p>Si on code COUNT(id_article) au lieu de COUNT(<strong>mots_articles.</strong>id_article) , la requête fini avec <i>FROM spip_mots</i> sans jointure avec l'autre table définie.<br class="manualbr" />Du coup, SPIP retourne une erreur indiquant que <strong>id_article</strong> est un champ inconnu.</p> Classer les articles par nombre de commentaires 2008-10-14T19:45:15Z https://files.spip.org/Classer-les-articles-par-nombre-de-commentaires#comment409210 2008-10-14T19:45:15Z <p>Sur contrib, pour la page auteurs, j'ai generalise la fonction :</p> <div class="precode"><pre dir="ltr" style="text-align: left;" class="php"><code><span class="kw2">function</span> critere_compteur<span class="br0">&#40;</span><span class="re0">$idb</span><span class="sy0">,</span> <span class="sy0">&</span><span class="re0">$boucles</span><span class="sy0">,</span> <span class="re0">$crit</span><span class="br0">&#41;</span><span class="br0">&#123;</span> <span class="re0">$boucle</span> <span class="sy0">=</span> <span class="sy0">&</span><span class="re0">$boucles</span><span class="br0">&#91;</span><span class="re0">$idb</span><span class="br0">&#93;</span><span class="sy0">;</span> <span class="re0">$params</span> <span class="sy0">=</span> <span class="re0">$crit</span><span class="sy0">-></span><span class="me1">param</span><span class="sy0">;</span> <span class="re0">$table</span> <span class="sy0">=</span> <a href="http://www.php.net/array_shift" rel='nofollow'><span class="kw3">array_shift</span></a><span class="br0">&#40;</span><span class="re0">$params</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="re0">$table</span> <span class="sy0">=</span> <span class="re0">$table</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">-></span><span class="me1">texte</span><span class="sy0">;</span> <span class="kw1">if</span><span class="br0">&#40;</span><a href="http://www.php.net/preg_match" rel='nofollow'><span class="kw3">preg_match</span></a><span class="br0">&#40;</span><span class="st_h">',^(\w+)([<>=])([0-9]+)$,'</span><span class="sy0">,</span><span class="re0">$table</span><span class="sy0">,</span><span class="re0">$r</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span> <span class="re0">$table</span><span class="sy0">=</span><span class="re0">$r</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="sy0">;</span> <span class="re0">$op</span><span class="sy0">=</span><span class="re0">$r</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span><span class="sy0">;</span> <span class="re0">$op_val</span><span class="sy0">=</span><span class="re0">$r</span><span class="br0">&#91;</span><span class="nu0">3</span><span class="br0">&#93;</span><span class="sy0">;</span> <span class="br0">&#125;</span> <span class="re0">$type</span> <span class="sy0">=</span> objet_type<span class="br0">&#40;</span><span class="re0">$table</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="re0">$type_id</span> <span class="sy0">=</span> id_table_objet<span class="br0">&#40;</span><span class="re0">$type</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="re0">$table_sql</span> <span class="sy0">=</span> table_objet_sql<span class="br0">&#40;</span><span class="re0">$type</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="re0">$trouver_table</span> <span class="sy0">=</span> charger_fonction<span class="br0">&#40;</span><span class="st_h">'trouver_table'</span><span class="sy0">,</span><span class="st_h">'base'</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="re0">$arrivee</span> <span class="sy0">=</span> <a href="http://www.php.net/array" rel='nofollow'><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="re0">$table</span><span class="sy0">,</span> <span class="re0">$trouver_table</span><span class="br0">&#40;</span><span class="re0">$table</span><span class="sy0">,</span> <span class="re0">$boucle</span><span class="sy0">-></span><span class="me1">sql_serveur</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="re0">$depart</span> <span class="sy0">=</span> <a href="http://www.php.net/array" rel='nofollow'><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="re0">$boucle</span><span class="sy0">-></span><span class="me1">id_table</span><span class="sy0">,</span><span class="re0">$trouver_table</span><span class="br0">&#40;</span><span class="re0">$boucle</span><span class="sy0">-></span><span class="me1">id_table</span><span class="sy0">,</span> <span class="re0">$boucle</span><span class="sy0">-></span><span class="me1">sql_serveur</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$compt</span> <span class="sy0">=</span> calculer_jointure<span class="br0">&#40;</span><span class="re0">$boucle</span><span class="sy0">,</span><span class="re0">$depart</span><span class="sy0">,</span><span class="re0">$arrivee</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span> <span class="re0">$boucle</span><span class="sy0">-></span><span class="me1">select</span><span class="br0">&#91;</span><span class="br0">&#93;</span><span class="sy0">=</span> <span class="st0">"COUNT(<span class="es4">$compt</span>.<span class="es4">$type_id</span>) AS compteur_<span class="es4">$table</span>"</span><span class="sy0">;</span> <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$op</span><span class="br0">&#41;</span> <span class="re0">$boucle</span><span class="sy0">-></span><span class="me1">having</span><span class="br0">&#91;</span><span class="br0">&#93;</span><span class="sy0">=</span> <a href="http://www.php.net/array" rel='nofollow'><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">"'"</span><span class="sy0">.</span><span class="re0">$op</span><span class="sy0">.</span><span class="st0">"'"</span><span class="sy0">,</span> <span class="st0">"'compteur_"</span><span class="sy0">.</span><span class="re0">$table</span><span class="sy0">.</span><span class="st0">"'"</span><span class="sy0">,</span><span class="re0">$op_val</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="br0">&#125;</span> <span class="br0">&#125;</span> <span class="kw2">function</span> balise_COMPTEUR_dist<span class="br0">&#40;</span><span class="re0">$p</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="re0">$p</span><span class="sy0">-></span><span class="me1">code</span> <span class="sy0">=</span> <span class="st_h">''</span><span class="sy0">;</span> <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/isset" rel='nofollow'><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$p</span><span class="sy0">-></span><span class="me1">param</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span> AND <span class="re0">$champ</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="re0">$p</span><span class="sy0">-></span><span class="me1">param</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">-></span><span class="me1">texte</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">return</span> rindex_pile<span class="br0">&#40;</span><span class="re0">$p</span><span class="sy0">,</span> <span class="st0">"compteur_<span class="es4">$champ</span>"</span><span class="sy0">,</span> <span class="st_h">'compteur'</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="kw1">return</span> <span class="re0">$p</span><span class="sy0">;</span> <span class="br0">&#125;</span></code></pre></div> <p>Ce qui permet d'ecrire simplement la boucle</p> <div class="precode"><pre dir="ltr" style="text-align: left;" class="spip"><code><span class="re11"><BOUCLE_auteurs</span><span class="re12">(AUTEURS)</span><span class="re13"><span class="re41">{compteur articles}</span><span class="re41">{0,20}</span><span class="re41">{par compteur_articles}</span><span class="re41">{articles.statut=publie}</span></span><span class="re10">></span> <span class="re1">#NOM</span> : <span class="re1">#ID_AUTEUR</span> : <span class="re1">#COMPTEUR</span><span class="re40">{articles}</span> <br /> <span class="re15"></BOUCLE_auteurs></span></code></pre></div> Classer les articles par nombre de commentaires 2008-07-04T01:59:43Z https://files.spip.org/Classer-les-articles-par-nombre-de-commentaires#comment407269 2008-07-04T01:59:43Z <p>Félicitations, voilà une contrib extrêmement utile qui comble ce qui était jusqu'à présent une lacune de SPIP. Un tout grand merci.</p> <p>(soit dit en passant, je pense que ça vaudrait la peine de suggérer l'intégration des critères et balises définis ici dans la distribution officielle de SPIP)</p> Classer les articles par nombre de commentaires 2008-07-03T11:29:25Z https://files.spip.org/Classer-les-articles-par-nombre-de-commentaires#comment407246 2008-07-03T11:29:25Z <p>Ah ben non, pas du tout, pour ca c'est le critère frequence du plugin nuage (+ voir article de James sur le sujet)</p> <p>Il faudrait sans doute expliquer un peu mieux la différence relation 1 <-> n / relation n <-> n</p> <p>@++</p> Classer les articles par nombre de commentaires 2008-07-03T03:09:52Z https://files.spip.org/Classer-les-articles-par-nombre-de-commentaires#comment407231 2008-07-03T03:09:52Z <p>Merci pour ce script très brillant. J'en voit de multiples applications. Cependant quelques petits commentaires sur le code pour un spipeur débutant auraient été bienvennues.</p> <p>Je vais essayer de l'utiliser pour faire un tri par nombre d'occurences d'un mot-clé.</p> <p>Merci encore <br class="autobr" /> Laurent</p>