#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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.