Je cherche à inclure un squelette A ou un squelette B selon la valeur d’une constante qui change à chaque hit, et définie dans le fichier mes_options.php. Avec par exemple define('MA_CONSTANTE', $numero); // 1..60
Dans un premier temps, j’ai essayé avec une balise dynamique, mais on ne peut pas faire de test sur la valeur retournée, en faisant par exemple [(#LIRE_CONSTANTE|=={10}|oui) inclusion A] car #LIRE_CONSTANTE retourne du php (l’aspect dynamique de la balise)…
Il est possible de faire retourner directement le bon squelette (A ou B) par la balise dynamique. Mais j’aimerai pouvoir effectuer le test de la constante dans un squelette…
On peut dans ce cas directement écrire en php quelque chose comme :
Ça fonctionne, mais cela va tout de même calculer les 2 inclusions, avant que le php ne s’interprète.
D’où ma question :
Est-il possible d’effectuer un test en syntaxe SPIP sur une variable qui change à chaque hit, ou autre approche à laquelle je n’aurai pas pensé ?
Le 04/03/2022 à 23:34, Julien Lanfrey via Discuter de SPIP a écrit :
D’où ma question :
Est-il possible d’effectuer un test en syntaxe SPIP sur une variable qui
change à chaque hit, ou autre approche à laquelle je n’aurai pas pensé ?
Une variable de session ?
Modifiable par squelette à chaque hit, testable par squelette, …
Mes utilisateurs ne sont pas authentifiés, il s’agit d’un aiguillage (A ou B) pour des utilisateurs lambda. #SESSION poserait aussi un problème de multiplication des caches que je souhaite éviter.
En fait, je crois qu’il n’y a pas trop d’autres choix simples que d’utiliser une balise dynamique.
et faire quelque chose comme #AFFICHER_A_OU_B. Je voulais être sûr de ne pas être passé à côté d’une alternative !
As tu essayé avec genre <INCLURE{fond=#EVAL{MA_CONSTANTE}}> ?
Sinon ya le plugin macrosession qui permet de produire « en SPIP » assez exactement l’équivalent de ton code PHP, tout en permettant aussi d’appliquer des filtres.
Et contrairement à ce que tu dis, je ne crois pas que les 2 inclusions sont calculées puisque ce sont des inclusions dynamiques justement. As tu vérifié ?