Exemple d’utilisation de la boucle TABLEAU

Cet article est une illustration de l’utilisation du plugin Boucles_sans_tables

Nota SPIP-Contrib : un article qui à fait débat avant publication quand à la solution proposée. La mise en ligne doit permettre de poursuivre ses échanges de manière plus profitable à tous.

Imaginons que pour des raisons de design, vous ayez besoin d’afficher une ligne centrée d’images, dans un ordre précis, au beau milieu d’un article.

Vous ne pouvez pas utiliser le code <imgXXX|center>, puis qu’alors les images seraient les une au dessus des autres. Et <imgXXX|left> ou <imgXXX|right> ne permettent pas de centrer horizontalement la ligne d’images.

Il vous faut donc insérer vos images via un autre balisage, par exemple un div avec une classe particulière, qui recevra la règle CSS text-align: center;.

Un modèle

A la place des balises img, nous allons créer un modèle illustrations, qui s’utilise dans le texte avec <illustrations|images=105,96,97> (où 105,96,97 sont les id_document des images que nous voulons afficher, dans l’ordre dans lequel nous voulons les afficher).

Dans ce modèle, nous allons collecter, via un filtre, dans un tableau PHP global les éléments sur lesquels nous allons boucler, puis nous allons utiliser ce tableau comme paramètre de la boucle TABLEAU.

Code

Le modèle

<div class="illustrations">
[ (#REM)
On utilise le plugin Boucles_sans_tables (http://www.spip-contrib.net/boucler-sur-un-tableau-un-compteur) pour boucler sur les éléments passés dans l'environnement dans leur ordre d'arrivée.
Il est OBLIGATOIRE de passer d'abord les données à boucler dans le filtre putInGlobalsAsArray, qui rempli le tableau $GLOBALS['scregIllustrations'] qui sera ensuite utilisé dans la boucle TABLEAU.
]
	[(#ENV{images}|putInGlobalsAsArray)]
<BOUCLE_parseArray (TABLEAU) {var=Illustrations}>
<BOUCLE_illustrations (DOCUMENTS) {id_document = #VALEUR}>
	[(#MODELE{img}{embed=oui})]
</BOUCLE_illustrations>
</BOUCLE_parseArray>
</div>

le filtre

function putInGlobalsAsArray($texte) {
	$GLOBALS['Illustrations'] = split(',',$texte);
	return ('');
}

Fonctionnement

Dans notre modèle, nous recevons les id de nos documents dans #ENV{images}, séparés par des virgules. Nous passons donc ces données dans le filtre putInGlobalsAsArray, qui a pour seule fonction de remplir le tableau PHP $GLOBALS['Illustrations']. Notez que la fonction ne renvoie rien (return ('');).

Une fois que notre filtre à créé le tableau PHP, il devient accessible pour la boucle TABLEAU. Il ne reste donc plus qu’à utiliser la boucle normalement : <BOUCLE_parseArray (TABLEAU) {var=Illustrations}>. Notez qu’ici, le {var=Illustrations} correspond au $GLOBALS['Illustrations']. Autrement dit, que si dans notre filtre nous faisons $GLOBALS[’toto’], alors nous bouclons sur (TABLEAU) {var=toto}.

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom