Els bucles recursius

Els bucles recursius ofereixen una funcionalitat molt potent de configuració de la pàgina amb una estructura jeràrquica, però el seu ús demana un bon domini lògic de l’encadenament dels bucles.

Per construir un bucle recursiu, en tenim prou indicant en el TYPE el nom d’un bucle que contingui això que s’escriu:

<BOUCLEx ....>
....
<BOUCLEn(BOUCLEx)></BOUCLEn>
....
</BOUCLEx>

El bucle n funciona com si s’hagués tornat a copiar la totalitat del bucle x (totes les etiquetes i el codi HTML, així com els textos condicionals abans, després i alternatiu) a l’indret on s’insereix el bucle n. Trobant-se el bucle n a l’interior del bucle x, s’obté un comportament recursiu: el bucle x conté un bucle n, que ell mateix reprodueix el bucle x que conté el bucle n, i així successivament, fins que el bucle x ja no dóna cap resultat. Quan no figura cap criteri en el bucle n, el canvi de context a cada crida del bucle x hauria de portar els criteris d’aquest a no trobar cap més element.

Aquesta tècnica permet crear sobretot la publicació dels fils de discussió dels fòrums. Un primer bucle «fabrica» l’entrada dels fils de discussió (els missatges que responen directament a un article), un segon bucle mostra les respostes a aquests missatges, i un bucle recursiu provoca la recursivitat en aquest segon bucle:

<BOUCLE_forum(FORUMS){id_article}>
   #TITRE
   <B_reponses>
   <UL>
   <BOUCLE_reponses(FORUMS){id_parent}>
      <LI>#TITRE
      <BOUCLE_recursive(BOUCLE_reponses)>
      </BOUCLE_recursive>
      </LI>
   </BOUCLE_reponses>
   </UL>
   </B_reponses>
</BOUCLE_forum>

En general, aquesta funcionalitat provoca una presentació gràfica molt clara de les estructures arborescents, particularment la jerarquia de les seccions del vostre lloc.

Nota 1: El nou compilador introduït per SPIP 1.8 considera que la notació <BOUCLEn(BOUCLEx)> a l’exterior del bucle x està buit de sentit, el que li permet aconseguir l’optimització del nombre de camps de les instàncies SQL que produeix, per a tots tipus de bucles.
Aquest ús no és una recurrència sinó una inclusió, funcionalitat a la que respon l’etiqueta INCLURE, clarament preferible.

Nota 2: En l’estat actual (SPIP 1.9) del compilador d’SPIP, la seqüència <BOUCLEn(BOUCLEx)></BOUCLEn> ha de figurar al primer nivell del bucle x, dit d’una altra manera, el bucle n ha d’estar immediatament inclòs pel bucle x, no per un altre bucle que estigui ell mateix a l’interior del bucle x.
El treure aquesta restricció es troba en estudi.

Nota 3 : A partir d’SPIP 1.8, es pot cridar una etiqueta homònima d’una dels bucles englobants explicitant el nom del bucle a la que pertany l’etiqueta. Fa falta, llavors, especificar el nom del bucle entre el # i el nom de l’etiqueta. Podeu trobar-ne més detalls a l’article La sintaxi de les etiquetes SPIP.

Escriurem llavors l’etiqueta #BALISE del bucle _boucle [1] de la següent maenra:
#_boucle:BALISE.

Carpeta

Autor merce Publié le : Mis à jour : 21/03/23

Traductions : عربي, català, Deutsch, English, Español, français, italiano, Nederlands