Dans mes_fonctions.php3 :
/*
* +----------------------------------+
* Nom du Filtre : texte_alternatif
* +----------------------------------+
* Date : Jeudi 8 mai 2003
* Auteurs : James (klike@firstream.net)
* Jean-Luc Girard (www.ouhpla.net)
* +-------------------------------------+
* Fonctions de ce filtre :
* affiche un texte si le contenu de la balise est vide
* +-------------------------------------+
*
* Pour toute suggestion, remarque, proposition d'ajout
* reportez-vous au forum de l'article :
* http://www.spip-contrib.net/Texte-alternatif
*/
function texte_alternatif ($texte, $avant='', $altern='', $apres='')
{
if ($texte)
return $avant.$texte.$apres;
else
return $altern;
}
Rappel :
Le filtre sinon
permet d’écrire, dans une boucle d’article :
[<div class="notes">(#NOTES|sinon{"Pas de notes"})</div>]
Cependant il ne permet pas de gérer un contexte d’insertion (avant et après) variable en fonction du résultat du test sur la balise, ainsi que le formalisme spip habituel [avant (test) après] le permet.
Le filtre texte_alternatif
Le filtre texte_alternatif
permet donc d’insérer un contexte avant et après la balise testée seulement si la balise est non vide, et d’insérer un texte en alternative au tout, si la balise est vide.
- Le 1er argument est le texte qui s’insère avant la balise si celle ci n’est pas vide
- Le 2e argument est le texte qui remplace la balise si celle-ci est vide. Par contre si la balise n’est pas vide, c’est elle qui est insérée à cette place.
- Le 3e argument est le texte qui s’insère après la balise si celle ci n’est pas vide
Exemple d’usage :
Pour insérer les notes dans un div avec un CSS particulier si il y a des notes, et un petit texte avec un autre CSS si il n’y a pas de notes.
- Source écrit :
[(#NOTES|texte_alternatif{
"<div class='notes'>",
"<div class='nonotes'>Il n'y a pas de notes</div>",
"</div>" })]
- Code généré équivalent si il y a des notes : <div class="notes">#NOTES</div>
- Code généré si il n’y a pas de notes :<div class="nonotes">Il n'y a pas de notes</div>