#EXPOSE et #_autreboucle:EXPOSE
Cédric Morin <[email protected]>
| Newsgroups | gmane.comp.web.spip.devel |
|---|---|
| Message-ID | <[email protected]> |
Hello,
en écrivant une navigation je rencontre le problème suivant :
dans une sous-boucle article l'utilisation de la balise expose avec une
indirection
#_sous:EXPOSE{active}
ne produit pas le même résultat que si je fais
#EXPOSE{active}
dans la boucle du dessus :
<BOUCLE_sous(RUBRIQUES){id_parent=1}{par titre}>
#SET{expose,#EXPOSE{active}}
<BOUCLE_has(ARTICLES){id_rubrique}{id_mot=1}{0,1}>
[(#REM) Ici #_sous:EXPOSE{active} est different de #GET{expose} ]
<li class="[(#GET{expose})]"><a href="#_sous:URL_RUBRIQUE"
class="">#_sous:TITRE</a></li>
</BOUCLE_has>
</BOUCLE_sous>
J'ai d'abord pensé à un bug et regardé le code et trouvé un patch qui
résout ça facilement
$ svn diff ecrire/
Index: ecrire/public/balises.php
===================================================================
--- ecrire/public/balises.php (revision 23730)
+++ ecrire/public/balises.php (working copy)
@@ -742,12 +742,12 @@
} else {
$key = $p->boucles[$b]->primary;
- $type = $p->boucles[$p->id_boucle]->primary;
+ $type = $p->boucles[$b]->primary;
$desc = $p->boucles[$b]->show;
$connect = sql_quote($p->boucles[$b]->sql_serveur);
// Ne pas utiliser champ_sql, on jongle avec le nom
boucle explicite
- $c = index_pile($p->id_boucle, $type, $p->boucles);
+ $c = index_pile($p->id_boucle, $type, $p->boucles, $b);
if (isset($desc['field']['id_parent'])) {
$parent = 0; // pour if (!$parent) dans
calculer_expose
mais le code semblant déjà prendre en compte les indirections cela
m'intriguait et j'ai donc fait un peu d'archéologie :
https://core.spip.net/projects/spip/repository/revisions/10478
a bien introduit la prise en compte du nom de boucle dans la balise,
mais ensuite
https://core.spip.net/projects/spip/repository/revisions/10485
a modifié cela.
De ce que je comprends le nom de boucle permet du coup de dire par
rapport à quoi on expose (il désigne la boucle qui donne l'argument
d'exposition)
Il me semble que la spec actuelle est un peu confuse et j'ai du mal à en
comprendre toutes les implications et usages, et je me demandais si
quelqu'un voyait mieux ?
Ou si a contrario il ne serait pas préférable de revenir à un
comportement plus lisible du type
"si je mets le nom de la boucle sur la balise elle se comporte comme si
je l'avais écrite directement dans cette boucle et pas dans une sous-boucle"
ce qui serait homogène avec toutes les autres balises ?
Bonne journée,
--
Cédric