SPIP

[ar] [ast] [bg] [br] [ca] [co] [cpf] [cs] [da] [de] [en] [eo] [es] [eu] [fa] [fon] [fr] [gl] [id] [it] [ja] [lb] [nl] [oc] [pl] [pt] [ro] [ru] [sk] [sv] [tr] [uk] [vi] [zh] Espace de traduction

Télécharger

#FOREACH

Mars 2010 — mis à jour le : Mai 2015

Toutes les versions de cet article :


En SPIP 2, la balise #FOREACH permet de « boucler » sur un contenu équivalent à un tableau calculé dans le squelette en appliquant pour chacun de ses éléments un modèle SPIP.

#FOREACH{balise, modele}

Cette balise a été supprimé en SPIP 3 au profit de la boucle DATA.

Exemples

-  Dans un squelette quelconque, l’utilisation de #FOREACH{env} affichera toutes les variables de la balise #ENV de la manière suivante :

  • 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

Autrement dit, pour chaque élément du tableau associatif php que représente la balise #ENV, #FOREACH appliquera le modèle foreach.html (cf. plus bas).

-  On peut vouloir afficher le contenu d’une autre balise. #CONFIG par exemple. Pour cela, on passera le nom de la balise comme premier paramètre :

#FOREACH{config} affichera donc à peu près :

  • 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
  • ...=> ...

Et pour toute balise SPIP représentant un tableau php on aura un résultat similaire (voir #ARRAY).

Fabriquer un modèle dédié

Le modèle foreach.html est celui qui est appliqué par défaut. On le trouve dans squelettes-dist/modeles/. Il est possible de le modifier, mais on peut aussi fabriquer un modèle dédié à une balise et le placer dans son propre dossier squelettes/modeles/.

Le modèle foreach_balise.html correspond à #FOREACH{balise}.

On peut aussi souhaiter créer des modèles généraux et les utiliser pour telle ou telle balise.
Par exemple, pour des listes non énumérées un modèle nommé squelettes/modeles/foreach_ul_li.html, qui contiendrait : <li><a href="#ENV{valeur}">#ENV{cle}</a></li> serait appelé par [<ul>(#FOREACH{ENV, foreach_ul_li})</ul>] et afficherait (source 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>

Plus de valeurs

Enfin, dans les cas plus complexes, on peut passer plus de valeurs au modèle en respectant la structure de tableau suivante pour la balise que vous aurez conçue :

  1.     'cle' => array (
  2.         'val1' => 'valeur1'
  3.         'val2' => 'valeur2'
  4.         'val3' => 'valeur3'
  5.         'val4' => 'valeur4'
  6.     )
  7.     'cle2' => array (
  8.         'val1' => 'valeur1bis'
  9.         'val2' => 'valeur2bis'
  10.         'val3' => 'valeur3bis'
  11.         'val4' => 'valeur4bis'
  12.     )
  13. )

et en fournissant un modèle adapté :

#ENV{val1}, #ENV{val2}, #ENV{val3} et #ENV{val4}

P.-S.

Avec SPIP 3

#FOREACH n’est plus disponible car avantageusement remplacé par la Boucle DATA.

Pour boucler des choses on utilisera la syntaxe ;

  1. <BOUCLE_for(DATA){source tableau,#LE_TABLEAU}>
  2. #CLE / #VALEUR
  3. </BOUCLE_for>

Pour juste afficher le contenu de #ENV ou #CONFIG, il est aussi possible d’utiliser :

[<pre>(#ENV**|unserialize|print_r{1})</pre>]
[<pre>(#CONFIG**|unserialize|print_r{1})</pre>]

Voir aussi : Exemples de BOUCLE(DATA)


Voir le squelette de cette page Site réalisé avec SPIP | Espace de traduction | Espace privé