Bonjour,
J'ai bien du mal avec le plugin expresso et spip.
Je voudrais limiter l'usage dans le squelette article à 13 articles :
- les 10 articles les plus lus de tout le site
- l'article à la une
- les 2 articles les plus récents à la Une dans une certaine rubrique
Pas de probleme c'est fait avec quelques boucles...
mais alors, je découvre que ça percole aussi ces pages
lorsqu'elles ont &debut_forum en url !
et ça je veux pas car ces pages de consultation des forums sont peu appelées
et je n'ai pas envie d'encombrer le cache statique et le htaccess.
Donc je voudrais exclure de ces pages les pages non principales
(exclure celles qui permettent de voir la suite des forums)
et pour cela tester les paramétres de la page
afin de ne pas inclure dans ce cas la balise expresso.
Si je le fais en php, ça marche pas, car spip étant appelé avant le php,
la balise spip expresso est exécutée, or elle n'ajoute pas du texte,
mais modifie le header... donc la modification a lieu
même si la condition n'est pas remplie.
(dîtes moi si je me trompe, mais c'est ce que j'ai conclu)
Les autres méthodes que j'essaie échouent lamentablement !
Déjà, si je met toutes mes boucles expresso dans un squelette à part,
que ce fichier soit <inclu ou #inclu n'y change rien :
les #HEADER_HTTP inclus dedans ne passent jamais la rampe.
(C'est pas conforme à la doc mais c'est ce que j'ai trouvé,
dîtes moi si je dois insister !)
Et sans passer par un fichier inclu, je galère avec le compilo spip
auquel je n'arrive pas pour l'instant à faire avaler le lot de boucles
en paramètre d'une quelconque structure syntaxique.
C'est la première fois que je fais une telle utilisation
des filtres à paramètres enchainés avec des tests et tout,
et j'ai l'impression qu'il y a des limitations imprévues au compilateur.
Me trompai-je et où ça alors ?
Déjà, #EVAL{$_SERVER['REQUEST_URI']} renvoie très bien l'uri de la page
par exemple /article.php?id_article=101&var_mode=calcul
mais ce que je voudrais c'est appeler ensuite un filtre pour faire
[(#EVAL{$_SERVER['REQUEST_URI']}|match{debut_}|?{'',' '})appelexpresso]
et là le compilo comprend pas du tout car ça renvoie [(/article.php?id_article=101&var_mode=recalcul|match{debut_}|?{'',' '})appelexpresso]
Par contre, pas de pb si je remplace $_SERVER['REQUEST_URI'] par time()
J'en ai conclu que c'est une limitation du compilateur,
et en décomposant en passant par un SET préallable,
puis en testant le GET, ça marche.
Mais le probleme se repose ensuite avec les boucles de sélection
des articles pour expresso, qui doivent remplacer appelexpresso dans l'expression ci dessus !
Car si je peux pas les appeler dans un include, il faut bien les passer
in extenso dans une structure syntaxique existante :
[(par exemple en 2eme paramètre de |?{'','ici'})
ou bien ici après le test ]
mais tout cela ne semble pas possible pour le compilo spip.
L'idéal serait de pouvoir tester en critère de boucle
la présence de debut_forum en paramétre de l'url
MAIS {debut_forum, 10} marche même si il n'y a pas debut_forum dans l'url.
(vous confirmez ?)
Mon dernier / ou prochain test / ç'aurait été d'ajouter {#ENV{debut_forums}!=''}
dans les critères de boucles de selection des pages candidates...
Je touche du bois pour qu'on puisse utiliser #ENV en premier élément d'un critère...
Si ça marche, je crois que j'aurais touché le bout de cette exploration !
Mais là mon serveur de test (et prod) est planté
(et je me demande si j'en suis pas la cause avec tous ces tests et erreurs !)
donc j'arrête et vous demande globalement votre avis !
Merci d'avance;
JLuc
JLuc