J’ai commencé par m’égarer dans les méandres du php quand Mortimer m’a montré un usage très intéressant du nouveau filtre conditionnel [1] "|?{sioui,sinon}"
.
Principes
Le code conditionnel est le suivant :
[(#LOGO_SITE||?{'',' '}) [(#NOM_SITE|supprimer_numero)] ] [(#LOGO_SITE)]
- le test sur LOGO_SITE retourne une chaîne vide quand il existe, donc le code optionnel après ne sera pas affiché.
- la suite n’est affichée que si LOGO_SITE existe.
NdM : la documentation du filtre ? se trouve dans l’article les filtres de spip, celle concernant le code optionnel avant ou après une balise dans l’article la syntaxe des balises SPIP.
Code
Voici la boucle simple. Ici il a été choisi de la présenter sous forme de liste.
<ul>
<BOUCLE_lien(SITES){id_rubrique}{par num nom_site}>
<li><a href = "#URL_SITE" class="spip_out">
<!-- C'est ici qu'on utilise la nouvelle fonction sioui,sinon -->
[(#LOGO_SITE||?{'',' '})
[(#NOM_SITE|supprimer_numero)]
]
<!-- Maintenant on affiche le logo s'il existe -->
[(#LOGO_SITE)]</a> : #DESCRIPTIF</li>
</BOUCLE_lien>
</ul>
Petit plus
Je désirai également maitriser les paramètres de l’image, c’est à dire : indiquer sa hauteur, sa largeur et le nom du site dans les balises alt et title.
Les filtres vont ici aussi nous aider. Il suffit de remplacer [(#LOGO_SITE)]
par le code suivant :
[<img src="./IMG/(#LOGO_SITE|fichier)"
title="[(#NOM_SITE|supprimer_numero)]"
alt="[(#NOM_SITE|supprimer_numero)]"
width="[(#LOGO_SITE||largeur)]"
height="[(#LOGO_SITE||hauteur)]">]
Ce qui donne sur la boucle précédente le code suivant :
<ul>
<BOUCLE_lien(SITES){id_rubrique}{par num nom_site}>
<li><a href = "#URL_SITE" class="spip_out">
<!-- C'est ici qu'on utilise la nouvelle fonction sioui,sinon -->
[(#LOGO_SITE||?{'',' '})
[(#NOM_SITE|supprimer_numero)]
]
<!-- Maintenant on affiche le logo s'il existe avec tous les paramètres tels qu'on le désire. -->
[<img src="./IMG/(#LOGO_SITE|fichier)" title="[(#NOM_SITE|supprimer_numero)]" alt="[(#NOM_SITE|supprimer_numero)]" width="[(#LOGO_SITE||largeur)]" height="[(#LOGO_SITE||hauteur)]">]
</a> : #DESCRIPTIF</li>
</BOUCLE_lien>
</ul>
Remerciements
Merci à Mortimer pour son commentaire dont cette contrib est fortement inspirée. Sa vision du filtre |?{sioui,sinon}
m’ouvre des perspectives fascinantes !
Discussions par date d’activité
2 discussions
Bonjour merci pour la contribe qui me permet de mieux comprendre la logique et le syntaxe de ce nouveau filtre
{sioui,sinon }
Juste deux questions :
* pourquoi y a t-il deux barres pour la définition du filtre si oui si non derriere la balise #logo-document ?
*
?{''; ' '}
est ce que sioui dit : ne rien afficher et sinon dit afficher un espace vide ?
Du coup y a un petit « blanc » généré devant le nom du site non ?
Merci d’avance pour les précisions.
- Le double pipe c’est l’ancienne syntaxe SPIP des appels de filtres sur des images.
- Oui, il y a un espace avant le nom du site quand il y a un logo. Souvent ce n’est pas gênant en html. Sinon c’est possible d’écrire directement ce qu’on veut dans la partie sinon :
[(#LOGO_SITE?{'',#NOM_SITE|supprimer_numero})]
(et c’est une virgule, pas un point virgule)
Répondre à ce message
Bonjour,
je souhaite afficher du contenu qui va varier en fonction de ce qu’il existe ou non.
L’idée :
si une vidéo existe, la boucle affiche la vidéo (et rien d’autre) SINON, si un contenu sonore existe, la boucle affiche le son (et rien d’autre) SINON, si un contenu de plusieurs images existe, la boucle affiche le ce contenu de plusieurs images (et rien d’autre) SINON le contenu par défaut à afficher est l’image de l’article (ou de la rubrique).
J’ai effectué deux tentatives sans succès :
1/
2/
Pourriez vous m’aider ?
Il manque des éléments de contexte pour te répondre. Es tu dans le contexte d’affichage d’un article ? Autrement dit, quand tu écris « Si une vidéo existe », c’est « sur le site » ou « associé à cet article » ?
Dans ce dernier cas ce sont des boucles DOCUMENTS que tu devras utiliser, et leur « partie alternative » pour gérer le cas « sinon ». Relis bien la doc des boucles générales : https://www.spip.net/fr_article894.html et la partie sur le code alternatif des boucles : https://www.spip.net/fr_article898.html
Par exemple s’il y a id_article dans l’environnement :
ça ne suffit pas mais c’est la structure logique qui correspond à ta demande
Oui merci. Vos explications m’ont bien aidé.
A priori ce code me donne satisfaction :
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 : |