Normalement tu dois avoir un paramètre dans l’url lorsque tu viens de te deconnecter
Donc tu pourrais utiliser ce paramètre pour savoir si c’est une deconnexion sur la page sur laquelle tu arrive et qui est en accès restreint
Donc dans la page en accès restreint :
a. Si les gens arrivent avec le paramètre dans l’url, tu utiliser |rediriger_par_entete pour renvoyer vers le sommaire
b. Si non tu indique l’habituel message interdit.
À cet effet, deux filtres ont été créés pour le plugin :
AccesRestreint_article_restreint appliqué à l’id_article
AccesRestreint_rubrique_restreinte appliqué à l’id_rubrique
Tu as là les filtres nécessaire pour répondre à ta question " Mon problème est de détecter si on est sur une page (rubrique ou article) à accès retreint ou pas."
Tu devrais passer explicitement #SESSION{id_auteur} comme paramètre des filtres, sinon je crains que tu ne tombe sur des souci de cache côté publique (et du coup mettre le fragment qui fait cela dans un squelette à part appelé via <INCLURE> pour éviter de perdre trop de cache)
Par ailleurs, ton problème vient de ta deuxième boucle
si tu es dans un contexte où tu n’a PAS de rubrique courante (par exemple hors d’une boucle article et sans que id_rubrique ne soit passé à l’url) et bien le #ID_RUBRIQUE que tu test vaux 0. Donc rien n’est restreint.
Attention : La boucle ne ramenant rien, SPIP considère la boucle en échec et applique toujours la partie //B_. Là, tes boucles sont vides donc elles produiront toujours la partie //B_ (et elles ne servent à rien). Par hygiène SPIPienne, il faut toujours au moins un espace entre le tag ouvrant BOUCLE et le tag fermant /BOUCLE si on veut que la boucle soit active. Ajoute donc au moins un espace dans leurs corps.
Par ailleurs, il est plus léger et ça me semble plus lisible et plus maintenable d’écrire :
Bonjour,
Bien que je n’y comprenne rien, je vais tenter de jouer le rôle du petit canard plastique (celui du dev, pas celui du bain )
Actuellement, spip4 a un comportement unique lorsqu’on se déconnecte, il se repositionne sur la page.
si la page est en accès libre → on affiche la page
si la page est en accès restreint → on affiche 401 (logique)
J’ai un spip 3 qui a un comportement légèrement différent (fait par un ancien spipeur)
si la page est en accès libre → on affiche la page
si la page est en accès restreint → on affiche le module de connexion (et on reviendra sur la page en cas de connexion)
Je pense que vous devez pouvoir adapter ce comportement en affichant le sommaire en lieu et place du module.
Bien que cela soit du spip3, je vous met le truc au cas où cela pourrait vous donner des idées
J’espère avoir cerné et copié l’endroit correspondant
Clt
Si avec le code que j’ai fourni, le gars est capable de faire afficher le module password en lieu et place d’un 401, on devrait pouvoir faire la même chose en remplaçant l’appel de la page du module par celle du sommaire, non?
(#SESSION{id_auteur}|oui) serait plus clair que (#SESSION{id_auteur}|?{' '}) et de même #ID_RUBRIQUE|>{0}|oui peut à mon avis plus simplement s’écrire #ID_RUBRIQUE|oui.
Ensuite tu utilises #ID_RUBRIQUE dans le //B de ta boucle ARTICLES, et tu n’y conditionnes pas le #SET comme tu le conditionnes dans le //B de la boucle RUBRIQUES. Faut te relire.
je pense que ça, ça intervient après : si on demande une page en accès restreint sans y être autorisé, on a une 401.
Je veux justement éviter cela en redirigeant vers la page d’accueil.