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

Qui êtes-vous ?

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

Dernière modification de cette page le 4 novembre 2007