Accueil > Docs > Afficher toutes les rubriques d’un site SPIP en utilisant le pipeline (...)

Afficher toutes les rubriques d’un site SPIP en utilisant le pipeline pre_boucle

mardi 18 octobre 2011, par b_b

Il peut être utile d’afficher toutes les rubriques d’un site sous SPIP sans tenir compte de leur statut (pendant la période de développement par exemple). Par défaut, SPIP n’affiche pas les rubriques qui ne contiennent pas d’élément publié. Heureusement il est possible de contourner ce comportement à l’aide du critère {tout} (lire la documentation du critère tout sur spip.net).

Par contre, cela peut vite devenir fastidieux d’ajouter ce critère à toutes les boucles RUBRIQUES de vos squelettes (avec le risque d’en oublier involontairement par la suite). C’est là que la magie des pipelines de SPIP va nous sauver ;)

Pour régler le problème d’un coup pour toutes les boucles rubriques du site, on va utiliser le pipeline pre_boucle qui permet de modifier les requêtes SQL servant à générer les boucles (source programmer.spip.org).

Pour cela il suffit d’ajouter le code suivant dans le fichier config/mes_options.php de votre site (fichier à créer s’il n’existe pas).

<?php

if (!defined('_ECRIRE_INC_VERSION')) return;

$GLOBALS['spip_pipeline']['pre_boucle'] .= "|tout_partout";
// ajouter le critère {tout} aux boucles rubriques si pas de présence d'un critère {statut}
function tout_partout($boucle){
        if ($boucle->type_requete == 'rubriques' AND !isset($boucle->modificateur['criteres']['statut']))
                $boucle->modificateur['criteres']['statut'] = true;
        return $boucle;
}

?>

Messages

  • Merci b_b pour cette astuce génial.
    Je t’adore :-)

  • J’suis pas une gonzesse, alors j’vais pas dire que j’t’adore, mais c’est tout comme

  • Et hop, pour les utilisateurs du Couteau Suisse, une nouvelle lame !
    Je profite pour étendre aux auteurs cette très bonne idée sur les rubriques ;-)

    => http://zone.spip.org/trac/spip-zone/changeset/54832

    Nom : Affichage public > Affiche tout
    Auteur : b_b (Merci !)
    Description : Il parfois utile d’afficher toutes les rubriques ou tous les auteurs de votre site sans tenir compte de leur statut (pendant la période de développement par exemple). Par défaut, SPIP n’affiche en public que les auteurs et les rubriques ayant au moins un élément publié.
    Bien qu’il soit possible de contourner ce comportement à l’aide du critère {tout}, cet outil automatise le processus et vous évite d’ajouter ce critère à toutes les boucles RUBRIQUES et/ou AUTEURS de vos squelettes.
    => Afficher en public tous les objets suivants : Rubriques / Auteurs
  • Et moi je suis un mec, et je t’adore quand même !
    Merci pour cette super astuce !!

  • Ben moi j’ai trouvé ton article très rapidement donc j’ai pas galéré ;)
    et ça ça fait du bien...
    (mais maintenant je dois enlever tous mes critères tout :o)
    merci !

  • Héhé, de rien TH et merci pour le commentaire :)

  • Le temps ayant passé :-) cette méthode peut-elle fonctionner sous SPIP 3 ? J’ai tenté, mais ça me plante l’affichage de tout le site :-)

  • Salut, oui la méthode fonctionne encore sous SPIP 3 sans problème. Si ça plante tout ton site c’est que tu dois avoir fait une erreur dans ton fichier d’options...

    Hésite pas à venir en causer sur IRC http://irc.spip.net

  • Hello,
    J’avais beaucoup d’espoir en ce pipeline, je ne sais pas pourquoi, ça ne fonctionne pas pour moi, en spip 3.0.20 :-(
    Qu’est-ce que j’ai pu rater ? C’est une installation toute propre, rien de modifié encore ! Est-ce parce que je suis en local ?
    Cordialement

  • Oups ! Il fallait juste vider le cache… je pensais que recalculer suffisait.
    Alors maintenant je peux crier : "c’est géniaaaaaal" !
    Merci pour ce bout de code :-)

  • @Karen content que tu aies trouvé et que ça fonctionne :)

  • J’aimerais un truc semblable, mais sur les tris : tout_par_titre qui supprimerait les tris éventuels et ne mettrait qu’un tri par titre.

  • Et cela pourrait-il s’appliquer aussi à l’admin /ecrire ?

    Par exemple, j’utilise des rubriques comme simples pages (et non un article, pour pouvoir faire un menu de rubriques et sous rubriques simplement). Avec le critère tout, cela fonctionne bien dans le site public (et encore plus simple avec cette astuce).

    Mais dans l’admin, pas possible par exemple de modifier l’URL de telle rubrique (car sans article publié, elle est considérée comme non publiée elle aussi - ce qui est étrange comme logique par rapport aux URL). Une autre astuce pour cela ?

    Merci !
    Julien

  • Salut, tu devrais pouvoir forcer le statut des rubriques à publié en t’insérant dans le pipeline formulaire_traiter ou post_editio, au choix. Sinon, astuce toute simple, l’ajout d’un document à ta rubrique devrait normalement la publier (à confirmer). Bon courage :)

  • Après avoir ajouté le code comme expliqué ci-dessus, la rubrique sans article est apparue dans le menu, mais lorsqu’on clique dessus, au lieu d’afficher le texte explicatif de la rubrique sans article, cela affiche la rubrique d’à côté !?

    Auriez-vous une idée de ce qui ne marche pas ? (SPIP 3.1.3)

  • Mais si, ça marche ! Je croyais pourtant avoir vidé le cache... merci beaucoup et pardon d’avoir commenté pour rien.
    La police de caractère "non Arial" de votre site, ça change tout !

  • Cool, content que tu aies réussi à appliquer cette astuce de ton côté ;)

Un message, un commentaire ?

Qui êtes-vous ?
Votre message

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