#INTRODUCTION au sein d'une boucle condition imbriqué
Remontée du problème
Problème remonté ici https://discuter.spip.net/t/gerer-une-news-letter-sous-spip-4/160602/5
En voulant reproduire et enquêter, j'ai trouvé trois sous problème.
Exemple
<BOUCLE_e(RUBRIQUES){id_rubrique=1}>
<h1>#ID_RUBRIQUE</h1>
<div>
Ca marche :<br />
#INTRODUCTION
</div>
<BOUCLE_condition(CONDITION){si #VAL{3}|>{2}}>[(#REM) On s'en fiche du test, cela ne concerne que la demo)]
<div>
Ca marche pas<br />
#INTRODUCTION
</div>
<div>
Ca marche pas plus<br />
[(#_e:INTRODUCTION)]
</div>
</BOUCLE_condition>
</BOUCLE_e>
Le problème se pose au niveau de la génération du code de la balise #INTRODUCTION lorsqu'on se trouve dans une boucle condition.
Résultat de la compilation du squelette
- En spip 4
interdire_scripts(generer_introduction_entite(@$Pile[0]['id_condition'], 'CONDITION', array(), null, null, null, $connect))
- En SPIP 4.1 :
interdire_scripts(generer_objet_introduction(($Pile[0]['id_condition'] ?? null), 'CONDITION', array(), null, null, null, $connect)) .
Les problèmes sont donc
- En spip 4.1 -> provoque une fatal, car
generer_objet_introduction()
refuse null en entrée. - il faudrait à minima que si on indique explicitement la boucle (via la syntaxe
#_e:INTRODUCTION
cela soit pris en compte) - et encore mieux : arriver à faire que #INTRODUCTION remonte la hierarchie des boucles si jamais la boucle mère n'est pas de type "OBJET".