La baliza #FOREACH permite iterar sobre un contenido equivalente a una array calculado en el esqueleto, aplicando para cada uno de sus elementos un modelo SPIP.
#FOREACH{baliza, modelo}
Ejemplos
- En un esqueleto cualquiera, la utilización de #FOREACH{env} mostrará todas las variables de la baliza #ENV de la siguiente manera:
- page=> test_boucle
- date=> 2009-12-22 22:44:27
- date_default=> 1
- date_redac=> 2009-12-22 22:44:27
- date_redac_default=> 1
Dicho de otra forma, para cada elemento del array asociativo PHP que representa la baliza #ENV, #FOREACH aplicará el modelo foreach.html (cf. más abajo).
- Se puede querer mostrar el contenido de otra baliza. #CONFIG, por ejemplo. Para eso, se pasará el nombre de la baliza como primer parámetro:
#FOREACH{config} mostrará por tanto a continuación:
- charset_sql_base=> utf8
- charset_collation_sql_base=> utf8_general_ci
- charset_sql_connexion=> utf8
- version_installee=> 14558
- nouvelle_install=> 1
- plugin=>
a:3:{s:3:"CFG";a:4:{s:3:"nom";s:90:"<multi> [fr]cfg: moteur de configuration [de]cfg: Konfigurationsmotor </multi>";s:4:"etat";s:6:"stable";s:3:"dir";s:8:"auto/cfg";s:7:"version";s:6:"1.14.1";}} - derniere_modif_rubrique=> 1260746188
- ...=> ...
Y para toda baliza SPIP que represente un array PHP se obtendrá un resultado similar (ver #ARRAY).
Fabricar un modelo dedicado
El modelo foreach.html es el que se aplica por defecto. Se le encuentra en squelettes-dist/modeles/. Es posible modificarlo, pero también se puede fabricar un modelo dedicado a una baliza y colocarlo en su propia carpeta squelettes/modeles/.
El modelo foreach_balise.html corresponde a #FOREACH{balise}.
También se puede querer crear modelos generales y utilizarlos para una u otra baliza.
Por ejemplo, para listas no enumeradas, un modelo llamado squelettes/modeles/foreach_ul_li.html, que contendrá: <li><a href="#ENV{valeur}">#ENV{cle}</a></li> sería llamado por [<ul>(#FOREACH{ENV, foreach_ul_li})</ul>] y mostraría (código HTML):
<ul>
<li><a href="test_boucle">page</a></li>
<li><a href="2009-12-22 22:54:40">date</a></li>
<li><a href="1">date_default</a></li>
<li><a href="2009-12-22 22:54:40">date_redac</a></li>
<li><a href="1">date_redac_default</a></li>
</ul>Más valores
Finalmente, en los casos más complejos, se pueden pasar más valores al modelo respetando la siguiente estructura de array para la baliza que se haya pensado:
y proporcionando un modelo adaptado:
#ENV{val1}, #ENV{val2}, #ENV{val3} et #ENV{val4}