Carnet Wiki

astuces Tableaux SPIP 3

Version 6 — May 2015 YannX

Les références :

Les Balises de référence


-  
#LISTE #LISTE
-  
# ARRAY
-  
#GET
-  
#SET

Alléger

Alléger l’écriture en utilisant #LISTE LISTE


Utiliser #LISTE{article,rubrique,breve,syndic}(cf. #LISTE
au lieu de :
#ARRAY{0,'article',1,'rubrique',2,'breve',3,'syndic'}

Remplir

Remplir un tableau dynamiquement dynamiquement


D’après la page : http://www.spip.net/fr_article4009.html et http://www.spip.net/fr_article4571.html
il y a “remplir un tableau dynamiquement” qui t’aidera particulièrement :

#SET{mon_tableau, #GET{mon_tableau}|push{#COMPTEUR_BOUCLE}}

Ce qui pourrait donner probablement:

#SET{idart, #ARRAY} 
<BOUCLE_art(ARTICLES){id_rubrique=2}>
    #SET{idart, #GET{idart}|push{#ID_ARTICLE}}
</BOUCLE_art> 

Pour vérifier verifier le résultat créé correctement avec |push, on peut obtenir la liste de cette façon :
[(#GET{idart}|implode{','})]

le paramètre de #VAL étant le séparateur entre chaque identifiant

Remplir

Remplir un tableau de tableaux avec une boucle boucle

On peut vouloir utiliser les résultats retournés par une BOUCLE en-dehors de cette BOUCLE (dans un tout autre endroit du squelette). L’exemple ci-dessous permet de disposer d’un tableau (array en php) dont on pourra extraire les informations souhaitées.

Déclarer le tableau et le remplir avec une boucle :

#SET{tab, #ARRAY}
<BOUCLE_u(ARTICLES) {tout}>
   [(#SET{tab, #GET{tab}|push{#LISTE{#ID_ARTICLE, #TITRE}}})]
</BOUCLE_u>
 

À ce stade, nous avons un tableau peuplé ainsi :

+---+---+------------------+
!  !  ! 1                !
!   ! 1 ! titre article 1  !
+---+---+------------------+
! 1 !  ! 2                !
!   ! 1 ! titre article 2  !
+---+---+------------------+
! 2 !  ! 3                !
!   ! 1 ! titre article 4  !
+---+---+------------------+

Utiliser les informations de ce tableau (avec le filtre |table_valeur ):

[(#GET{tab}|table_valeur{1/1})]  affichera «titre article 2»
[(#GET{tab}|table_valeur{2/0})]  affichera «3»

Un

Un tableau dans un critère IN IN


Avec l’opérateur IN dans un critère, SPIP attend :

Donc il ne faut pas lui transmettre un #GET qui contiendrait une liste (surtout en chaine de caractères).!
Il faut lui transmettre un tableau (#ARRAY)

Dans ton cas, tu n’as donc pas besoin de faire l’implode de
#GET{idart}, tu peux utiliser le tableau tel quel dans le critère avec IN.

Si tu es obligé de manipuler une liste stockée dans une variable alors
il faudra “l’exploder” pour que cette liste soit transformée en
tableau et utilisée par le IN:

<BOUCLE_gis(ARTICLES){gis}{id_article IN #GET{variablephp}|explode{','}}>
voire
<BOUCLE_gis(ARTICLES){gis}[{id_article IN (#GET{variablephp})}]>

NB:
-  implode: transforme un tableau (#ARRAY) en liste (séparée par ce que tu lui donnes en argument).
-  explode fait l’inverse: transforme une
liste (séparée par ce que tu donne en argument) en tableau.

----

Les filtres dédiés

Les suffixes de balises : * et **

http://www.spip.net/fr_article4572.html
http://www.spip.net/fr_article4575.html