SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 273 visiteurs en ce moment

Accueil > Navigation > Nuage de mots (tagcloud) > Nuage de mots-clés > Balise #FOREACH

Balise #FOREACH

3 février 2008 – par James – commentaires

2 votes

Ceci est une archive périmée mais qui reste intéressante, parfois autant pour l’article que les commentaires associés.

une balise pour appliquer un modèle à tous les éléments d’une balise contenant un tableau

SPIP s’est vu enrichi ces derniers mois de balises permettant des constructions de squelettes avec un niveau programmatique qui dépasse le cadre de la consultation de bases de données. En particulier une balise qu’on pourrait comparer aux instructions de bouclage de php lui-même : #FOREACH.

Dans la lignée des balises #SET, #GET et #ARRAY, cette balise 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.

Le choix de développer ce concept sous forme de balise plutôt que de boucle tient au fait que les boucles sont destinées à traiter des données issues de bases de données. Les besoins de boucler sur des contenus calculés dans les squelettes doivent donc être traités par une balise et des squelettes.

Le plugin nuage s’appuie sur cette balise,et la technique d’intégration dans 1.9.2 est aussi comprise dans le plugin, d’où sa présence dans cette rubrique.

Premier exemple

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

- cle=> valeur

soit :
-  lang => fr
-  date => 2008-01-28 21:15:00
-  date_redac => 2008-01-28 21:15:00
-  ... => ...

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). Dans ce modèle, le nom de la variable sera stocké dans #ENV{cle}, la valeur dans #ENV{valeur}.

Corsons l’affaire

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 :
-  version_installee=> 1.927
-  charset=> utf-8
-  nom_site=> Mon site SPIP Stable
-  ... => ...

Et pour toute balise SPIP représentant un tableau php on aura un résultat similaire.

Changeons de forme

Le modèle foreach.html est celui qui est appliqué par défaut. Il est possible de le modifier, mais on peut aussi fabriquer un modèle dédié à une balise.

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 :

squelettes/modeles/foreach_ul_li.html :

sera le modèle qui correspond à [<ul>(#FOREACH{ENV,ul_li})</ul>]

.

Plus de valeurs

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

et en fournissant un modèle adapté :

La définition de la balise #NUAGE dans le plugin du même nom est un bon exemple de ce cas.

Le code

Cette balise se trouve dans la version de développement de SPIP, mais voici comment l’intégrer dans un site qui tourne encore avec une version 1.9.2.

Lorsque vous passerez à la prochaine version, ça se passera sans douleur grâce au petit test de version ci-dessous.

  1. Récuperer le fichier 193_fonctions.php du plugin nuage et copiez-le dans votre dossier squelettes/,
  2. dans squelettes/mes_fonctions.php :
    <?php

    //intégration des fonctions nécessaires de SPIP 1.9.3
    if($GLOBALS['spip_version'] < 1.93)
            include_spip('193_fonctions');

    //vos filtres...

    ?>
  3. dans squelettes/modeles/foreach.html :
    #PUCE #ENV{cle} => #ENV{valeur}<br />

Voir en ligne : #FOREACH

Dernière modification de cette page le 3 février 2008

Retour en haut de la page

Vos commentaires

  • Le 16 juillet 2008 à 11:25, par Gilles VINCENT En réponse à : Balise #FOREACH

    Salut,

    Merci pour ce bon tutoriel.

    Vu que cette balise est désormais intégrée dans le Core, est-ce qu’il n’est pas raisonnable que cet article (où un clone) soit sur spip.net ?

    • Le 23 décembre 2009 à 00:17, par ? En réponse à : Balise #FOREACH

      c’est en train de se faire.

      (quoi « avec retard » ?)

  • Le 16 mai 2008 à 12:58, par ? En réponse à : Balise #FOREACH

    Bonjour,

    J’ai un petit soucis.
    Je ne vois pas la balise dans un SPIP 1.9.2d.

    Elle n’existerait pas que à partir de la version 1.9.3 ?

    merci

    • Le 16 mai 2008 à 16:02, par ? En réponse à : Balise #FOREACH

      lire dans l’article même :

      Cette balise se trouve dans la version de développement de SPIP, mais voici comment l’intégrer dans un site qui tourne encore avec une version 1.9.2.

Retour en haut de la page

Ça discute par ici

  • Bazar

    8 octobre 2015 – 21 commentaires

    Un squelette pour étaler son bazar sur l’accueil. Bazar est un squelette HTML5/CSS3 issu du squelette neo-dist (http://zone.spip.org/trac/spip-zone/browser/_core_/plugins/neo-dist) : c’est un choix fait au départ, qui à l’avantage d’intégrer (...)

  • LinkCheck : vérificateur de liens

    13 février 2015 – 70 commentaires

    Ce plugin permet de chercher et tester l’ensemble des liens présents dans les objets. Vous pourrez donc en quelques clics connaître les liens brisés ou défectueux qui se sont immiscés dans le contenu de votre site SPIP. La vérification s’effectue en (...)

  • Dublin Core

    21 septembre 2010 – 28 commentaires

    Un petit squelette pour l’insertion de méta-données Dublin Core dans la partie head des articles. Le Dublin Core « Le Dublin Core est un schéma de métadonnées générique qui permet de décrire des ressources numériques ou physiques et d’établir des (...)

  • Le plugin ZotSpip

    28 mai 2012 – 136 commentaires

    Synchronise Spip avec une bibliothèque (personnelle ou partagée) de références bibliographiques Zotero. Utilisez Zotero pour gérer / importer / rédiger vos références bibliographiques, puis incorporez vos références bibliographiques dans votre Spip avec (...)

  • Newsletters

    16 janvier 2013 – 410 commentaires

    Ce plugin permet de composer des Info-lettres. Par info-lettre, on désigne ici le contenu éditorial qui va être composé et envoyé par courriel à une liste d’inscrits. Le plugin permet de composer une info-lettre à partir d’un modèle pré-composé, (...)