Les tableaux PHP (array) sont vraiment utiles lorsque vous avez à manipuler les mêmes éléments plusieurs fois.
Ils ont étés introduits avec la version 1.9.2 : #ARRAY{clé1,valeur1,clé2,valeur2...}
pour autoriser la création d’un tableau (indexé) de taille variable par exemple pour utiliser dans un #SET ou un critère IN dynamique.
Cette balise vous autorise à faire de nombreuses opération sur les tableaux.
Exemple
Cet exemple est extrait de spipbb
#SET{modos,#ARRAY}
<BOUCLE_modo_art(AUTEURS){id_article}>
#SET{modos,#GET{modos}|array_merge{#ARRAY{#COMPTEUR_BOUCLE,#ID_AUTEUR}}}
</BOUCLE_modo_art>
<BOUCLE_art_rub(ARTICLES){id_article}>
<BOUCLE_rub_admin(AUTEURS_RUBRIQUES){id_auteur !IN
#GET{modos}}{id_rubrique=#ID_RUBRIQUE}>
<BOUCLE_aut_admin(AUTEURS){id_auteur}>
#SET{modos,#GET{modos}|array_merge{#ARRAY{#COMPTEUR_BOUCLE,#_aut_admin:ID_AUTEUR}}}
</BOUCLE_aut_admin>
</BOUCLE_rub_admin>
</BOUCLE_art_rub>
- Création d’un tableau vide.
- dans la boucle _modo_art
#ARRAY{#COMPTEUR_BOUCLE,#ID_AUTEUR}
crée un array qui contient un élément de valeur id_auteur indexé par la valeur de #COMPTEUR_BOUCLE (donc pas encore utilisé). La fonction standard array_merge() de PHP réalise ensuite le boulot : cette valeur est alors stockée comme dernier élément du tableau ’modos’. - Un autre ensemble de boucles complète ce tableau avec les auteurs d’articles de la même rubrique.
Notez que la fonction PHP est utilisée comme un filtre : ce n’est possible que parce que son premier argument est l’array à manipuler.
Bien sûr tout ceci pourrait être fait avec du PHP directement dans le squelette. L’avantage d’utiliser la balise #ARRAY est que le résultat est géré par le cache de SPIP.
Remarque : en SPIP 2.0, le plugin spip-bonux permet de raccourcir considérablement la syntaxe d’intégration des éléments dans l’#ARRAY grâce aux balises #SET_PUSH et #SET_MERGE
Discussions par date d’activité
Une discussion
Bonjour Gilles,
Comment faire pour afficher toutes les valeurs d’un tableau dans la page ? Histoire de vérifier ce que l’on est en train de faire.
En fait j’essaye de lister tous les contenus publiés (articles, brèves, documents...) par date (pour construire un flux d’activités). Je crois que ça devrait être possible avec les #ARRAY, en y insérant des valeurs pour chaque boucle, mais pour l’instant je n’arrive pas à faire quoi que ce soit. La doc semble s’adresser plutôt à des développeurs qui savent de quoi on parle :-)
Qu’en penses-tu ?
Valéry
si tu veux boucler dans un #ARRAY, le plus simple est d’installer le plugin BONUX et d’utiliser une boucle POUR : voir SPIP Bonux paragraphe « Une boucle (POUR) »
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
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.
Suivre les commentaires : |