Afficher le nombre d’articles en attente de validation

Ce filtre va vous permettre d’afficher n’importe où sur votre site le nombre d’articles en attente de publication. Il explique aussi comment insérer du code PHP dans vos pages et en gardant le résultat en cache.

Ce filtre va vous permettre d’afficher n’importe où sur votre site le nombre d’articles en attente de publication. Vous pouvez en voir un exemple sur http://www.noplay.net sous le titre Aidez nous.

Une implantation simple

On va commencer par mettre notre script directement dans le squelette.

Pour l’utiliser il suffit de mettre à l’emplacement où vous désirez afficher le nombre d’articles en attente, ce petit bout de code (dans le squelette) :

<?php
$query = "SELECT COUNT(*) FROM spip_articles WHERE statut='prop'";
$r = spip_query($query);

$nb_prop = 0;
while ($row = spip_fetch_array($r)) {
$nb_prop++;
}

echo "Il y a ".$nb_prop." articles en attente de publication.";
?>

Il s’agit simplement de faire une requête MySQL qui va nous retourner la liste des articles dont le statut est prop(proposé). Puis on fait une boucle pour compter le nombre d’éléments trouvés.

Cette solution marche mais a un défaut, en effet la requête est effectuée à chaque affichage de la page (le code php n’est pas mis en cache). Oubliez donc cette solution, elle n’est là que pour que vous compreniez bien le problème.

Afficher le nombre d’articles proposés en filtre

C’est Fil qui m’a donné la solution, il suffit de ne pas mettre le code dans le squelette mais dans une fonction (un filtre) que l’on placera dans mes_fonctions.php3.

Notre fonction ressemblera donc à ceci :

/*
 *   +----------------------------------+
 *    Nom du Filtre :    list_prop                                     
 *   +----------------------------------+
 *    Date : vendredi 20 février 2004
 *    Auteur :  Noplay (noplay@noplay.net)                                     
 *   +-------------------------------------+
 *    Fonctions de ce filtre :
 *     Ce filtre sert à afficher le nombre
 *     d'articles en attente de validation.
 *   +-------------------------------------+ 
 *  
 * Pour toute suggestion, remarque, proposition d'ajout
 * reportez-vous au forum de l'article :
 * http://www.uzine.net/spip_contrib/article.php3?id_article=408
*/

function list_prop() {
  $query = "SELECT COUNT(*) FROM spip_articles WHERE statut='prop'";
  $r = spip_query($query);

  $nb_prop = 0;
  while ($row = spip_fetch_array($r)) {
    $nb_prop++;
  }
  if ($nb_prop) {
    return "Il y a <b>".$nb_prop."</b> articles en attente de publication.<br><br>";
  }
}

Vous remarquerez que j’ai remplacé le echo (qui sert à afficher à l’ecran) par un return. Cela signifie que l’on va retourner le texte à afficher au moteur de SPIP qui s’occupera de l’afficher là où il doit se trouver.

Mais il reste l’appel, en effet habituellement on utilise les filtres pour modifier un texte passé en paramètre. Il nous faut donc trouver un code SPIP qui ne prend pas de paramètre. Cette variable c’est #NOM_SITE_SPIP, il faudra donc à l’endroit où vous désirez afficher le nombre d’articles en attente mettre ce code :

[(#NOM_SITE_SPIP|list_prop)]

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

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