[spip-dev] Boucle AUTEURS à l'intérieur d'une boucle FORUMS

Bonjour,

  Je suis en train de modifier mes squelettes pour utiliser les nouvelles capacités de la 1.8 alpha 2 et notamment la possibilité de mettre une boucle AUTEURS à l'intérieur d'une boucle FORUMS :-P.

  Comme les forums en question étaient à accès libre à l'origine puis sont passés en abonnement par la suite, la boucle AUTEURS ne renvoie pas forcément quelque chose. J'ai donc écrit :

<BOUCLE_auteur(AUTEURS){id_auteur}{tout}>
  <a href="profil#ID_AUTEUR.html">#NOM</a>
</BOUCLE_auteur>
#NOM
<//B_auteur>
#NOM

le dernier #NOM est là pour le test.

le #NOM situé entre </BOUCLE_auteur> et <//B_auteur> n'affiche rien quand l'auteur n'est pas dans la table spip_auteurs (id_auteur est à 0 dans la ligne de la table spip_forum correspondante).

A+

<BOUCLE_auteur(AUTEURS){id_auteur}{tout}>
  <a href="profil#ID_AUTEUR.html">#NOM</a>
</BOUCLE_auteur>
#NOM

le #NOM situé entre </BOUCLE_auteur> et <//B_auteur> n'affiche rien quand l'auteur n'est pas dans la table spip_auteurs (id_auteur est à 0 dans la ligne de la table spip_forum correspondante).

C'est peut-etre la fatigue mais je ne vois pas où il y a bug:
si id_auteur est 0 la boucle n'a rien à dire, je pige pas.

Par ailleurs, l'espace à l'intérieur de la boucle est nécessaire (je suppose que le but est d'éliminer les boucles vide à priori mais c'est parfois génant. En effet, sur certains articles, j'ai plus de 13000 message, ce qui engendre l'envoit de 13ko de blancs au client :wink: Ne pourrait-on pas modifier cela ?

Non, l'espace à l'intérieur n'est pas obligatoire: en effet je n'appelle pas le
serveur si le corps est vide sauf si #TOTAL_BOUCLE est utilisé (ligne 105 de
inc-calcul-squel).

En revanche, il me semble qu'on avait parfois des soucis avec les boucles vides pour compter toutes les *réponses d'un thread* (pas d'un article, donc).

<BOUCLE_f(FORUMS){id_forum}{id_parent = 0}{plat}></BOUCLE_f>#TOTAL_BOUCLE</B_F> - <//B_F>

Dans l'ancien compilo TOTAL_BOUCLE s'emmelait les crayons dans les différents
niveaux de boucles. Normalement c'est corrigé dans la version actuelle.

esj

<BOUCLE_auteur(AUTEURS){id_auteur}{tout}>
  <a href="profil#ID_AUTEUR.html">#NOM</a>
</BOUCLE_auteur>
#NOM

le #NOM situé entre </BOUCLE_auteur> et <//B_auteur> n'affiche rien quand l'auteur n'est pas dans la table spip_auteurs (id_auteur est à 0 dans la ligne de la table spip_forum correspondante).

C'est peut-etre la fatigue

On est deux :wink:

mais je ne vois pas où il y a bug:
si id_auteur est 0 la boucle n'a rien à dire, je pige pas.

Justement, quand elle n'a rien a dire, le #NOM situé entre </BOUCLE_auteur> et <//B_auteur> devrait s'afficher

si je mets un texte à la place de #NOM, il s'affiche quand la boucle n'a rien à dire. Par contre avec #NOM, rien ne sort :

<BOUCLE_auteur(AUTEURS){id_auteur}{tout}>
  <a href="profil#ID_AUTEUR.html">#NOM</a>
</BOUCLE_auteur>
#NOM
<//B_auteur>

La boucle englobante étant BOUCLE_sujets(FORUMS){id_article}{par date}{inverse}{debut_sujet,20}>, j'ai essayé avec #_sujets:NOM (vu que le #NOM en question est celui de la boucle FORUMS), sans succès

Les deux boucles :

<BOUCLE_sujets(FORUMS){id_article}{par date}{inverse}{debut_sujet,20}>
  <tr><td class="titre"><a href="message#ID_FORUM.html" title="[(#TEXTE*|supprime_bb|couper{100})]">[(#TITRE*|supprime_bb)]</

</td>

  <td class="centre">
    <BOUCLE_auteur(AUTEURS){id_auteur}{tout}>
      <a href="profil#ID_AUTEUR.html">#NOM</a>
    </BOUCLE_auteur>
    #NOM
    <//B_auteur>
  </td>
  <td class="centre">
    <BOUCLE_nbmessages(FORUMS){id_parent}></BOUCLE_nbmessages>#TOTAL_BOUCLE<//B_nbmessages>
  </td>
  <td>
    <BOUCLE_messages(FORUMS){id_parent}{par date}{inverse}{0,1}>
      [(#DATE|affdate)]<br />[(#DATE|affheure)]<br />par
      <BOUCLE_rep(AUTEURS){id_auteur}{tout}>
        <a href="profil#ID_AUTEUR.html">#NOM</a>
      </BOUCLE_rep>
      #NOM
      <//B_rep>
    </BOUCLE_messages>
    &nbsp;
    <//B_messages>
  </td>
</tr>
</BOUCLE_sujets>

Ca y est j'ai compris, mais il faudrait voir ce que faisait la version précédente.
La convention des boucles forums stipule qu'une balise #NOM est interprétable comme la balise #AUTEUR de la
table des forums. Quand tu écris #NOM après /BOUCLE_auteur, il y a une certaine ambiguité sur le fait de savoir
si on référence la boucle _auteur ou la boucle d'avant.
Ca ne me pose pas pb de changer ça, mais il faudrait être sûr de ce qu'on veut, notamment par rapport à avant.

esj

Logiquement, en dehors des balises <BOUCLE> </BOUCLE>, aucun item de l'itération n'est sélectionné (enfin c'est comme ça que je vois les choses). un #TOTO se réfère donc à la boucle englobante. non ?

Bah oui (sauf pour TOTAL_BOUCLE) donc ici ton #NOM est en fait le champ AUTEUR de la boucle FORUM
dont tu as bien dit qu'il était vide.

esj

non non

J'ai dit que champs id_auteur était à 0 mais le champs auteur contient bien quelque chose