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
3 novembre 2011, 14:26, par Alexandra
Merci b_b pour cette astuce génial.
Je t’adore :-)
23 novembre 2011, 18:40, par yffic
J’suis pas une gonzesse, alors j’vais pas dire que j’t’adore, mais c’est tout comme
24 novembre 2011, 01:59, par Pat
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
14 mars 2013, 10:31, par Gaelle
SYmpa ce site
1er octobre 2013, 22:31, par Vincent
Et moi je suis un mec, et je t’adore quand même !
Merci pour cette super astuce !!
25 juillet 2014, 18:32, par th
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 !
25 juillet 2014, 18:34, par b_b
Héhé, de rien TH et merci pour le commentaire :)
31 mars 2015, 18:56, par FaMo
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 :-)
31 mars 2015, 19:08, par b_b
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
14 septembre 2015, 20:43, par Karen
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
15 septembre 2015, 08:15, par Karen
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 :-)
15 septembre 2015, 09:22, par b_b
@Karen content que tu aies trouvé et que ça fonctionne :)
3 août 2016, 12:34, par RealET
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.
3 août 2016, 12:48, par RealET
Je me réponds : trouvé une piste ici : http://programmer.spip.net/Appliquer-un-tri-par-defaut-sur
17 novembre 2016, 12:08, par julien
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
17 novembre 2016, 12:40, par b_b
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 :)
14 avril 2017, 13:10, par Maja
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)
16 avril 2017, 18:35, par Maja
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 !
17 avril 2017, 18:53, par b_b
Cool, content que tu aies réussi à appliquer cette astuce de ton côté ;)