Teddy Payet
CTO Freelance

Afficher les champs d’un objet #SPIP v2

Dans la même trempe que Afficher les champs d’un objet #SPIP, je vais prendre le même principe mais l’étendre en affichant une chaîne de langue… Tout un programme.
J’ai réussi cette performance grâce au code que m’a donné kent1. Merci à lui pour ce code.

L’utilité de cette boucle est de lister les différents champs d’un objet sur sa page de vue. Exemple : ?exec=projet_site&id_site=XX

L’espace privé de SPIP 3 étant géré par des squelettes, il suffit de créer un fichier /prive/squelettes/extra/projet_site.html avec le code suivant :

[(#BOITE_OUVRIR{[(#VAL{#ENV{exec}}|concat{':label_',#ENV{exec},'_champs'}|_T)],'info','titrem'})]
[(#ENV{singulier}|=={oui}|non)
[(#SET{valeurs,#VAL{#ENV{exec}}|concat{'s'}|description_table|table_valeur{field}|array_keys|print})]
][(#ENV{singulier}|=={oui}|oui)
[(#SET{valeurs,#VAL{#ENV{exec}}|description_table|table_valeur{field}|array_keys|print})]
]
[(#SET{tableau,#GET{valeurs}|explode{', '}})]
<B_label>
<ul class="liste-items[ (#VAL{#ENV{exec}}|concat{':label_',#ENV{exec},'_champs'})]">
<BOUCLE_label(DATA){si #SESSION{webmestre}|=={oui}} {source table, #GET{tableau}}>
<li class="item"><strong>#VALEUR : </strong>[<br/>(#VAL{#ENV{exec}}|concat{':label_',#VALEUR}|_T)]</li>
</BOUCLE_label>
</ul>
</B_label>
[(#BOITE_FERMER)]

Structure à respecter

En premier lieu, il faut avoir le fichier de langue nommer sous cette forme : lang/projet_site_fr.php. Puis chaque champ doit avoir son label : label_champ, soit label_id_site, label_logiciel_nom, label_logiciel_version, etc.
Après cela, tout roule !

L’astuce magique de kent1

Je vous avais dit que kent1 m’avait communiqué un code qui permettait de reconstruire une chaîne de langue. Voici ce bout de code :
[(#VAL{#ENV{exec}}|concat{':label_',#VALEUR}|_T)]
L’application du filtre |_T permet de transformer notre variable en chaîne de langue. Magique !

 
Langage et développement
PHP
Frameworks
SPIP
Catégorie
Boucle DATA, Astuce