[spip-dev] Boucle HIERARCHIE - pas intuitive

Bonjour !

On nous demande de "lister ce qui ... parait incohérent". La boucle
HEIRARCHIE n' est peut-être pas incohérente, mais elle l'est presque à mon
avis:

1. <BOUCLE_hier(HIERARCHIE){id_article}> doit être entourée d'une boucle
ARTICLES pour qu'elle marche. (ce n'est pas suffisant de passer id_article
dans l'URL ou dans l'INCLURE.

2. Si une boucle (RUBRIQUES) intervient entre la boucle ARTICLES et la
boucle HIERARCHIE, l'hierarchie rendue est celle de la rubrique de la boucle
RUBRIQUES, et non pas celle de l'article.

Par exemple :

<BOUCLE_principale(ARTICLES){id_article=909}>
<BOUCLE_aleatoire(RUBRIQUES){id_rubrique=44}>
<BOUCLE_hier(HIERARCHIE){id_article}>
    <br>#ID_RUBRIQUE
</BOUCLE_hier>
</BOUCLE_aleatoire>
</BOUCLE_principale>

rend la hierarchie de la rubrique 44 et non celle de l'article 909, même si
{id_article} est specifié dans le critère!

3. Si on essaie ceci :

<BOUCLE_principale(ARTICLES){id_article=909}>
<BOUCLE_aleatoire(RUBRIQUES){id_rubrique=44}>
<BOUCLE_hier(HIERARCHIE){id_article=#_principale:ID_ARTICLE}{0,n}>
    <br>#ID_RUBRIQUE
</BOUCLE_hier>
</BOUCLE_aleatoire>
</BOUCLE_principale>

on reçoit une erreur MySQL :
SELECT rubriques.id_rubrique, FIND_IN_SET(id_rubrique, '0,7')-1 AS rang,
rubriques.lang FROM spip_rubriques AS rubriques WHERE (rubriques.id_article
= '909') AND id_rubrique IN (0,7) ORDER BY rang

Champ 'rubriques.id_article' inconnu dans where clause

4. Pour que cela marche on doit ajouter une boucle ARTICLES juste avant la
boucle HIERARCHIE :

<BOUCLE_principale(ARTICLES){id_article=909}>
<BOUCLE_aleatoire(RUBRIQUES){id_rubrique=44}>
<BOUCLE_reparateur(ARTICLES){id_article=#_principale:ID_ARTICLE}>
<BOUCLE_hier(HIERARCHIE){id_article}>
    <br>#ID_RUBRIQUE
</BOUCLE_hier>
</BOUCLE_reparateur>
</BOUCLE_aleatoire>
</BOUCLE_principale>

- bref, on peut perdre pas mal de temps avec la boucle HIERARCHIE si on ne
sait pas tout cela!

Paolo

J''ecrivais :

4. Pour que cela marche on doit ajouter une boucle ARTICLES juste avant la
boucle HIERARCHIE :
...
<BOUCLE_reparateur(ARTICLES){id_article=#_principale:ID_ARTICLE}>

évidemment
    <BOUCLE_reparateur(ARTICLES){id_article}>
suffit aussi.

Paolo