Texte alternatif

Afficher un texte non vide avec un contexte, et un texte alternatif si le contenu de la balise est vide : un « sinon » avec contexte, sinon un texte alternatif...

Ce filtre très simple vous permettra d’afficher le texte non vide d’une balise avec un contexte, et un texte alternatif si le contenu de la balise est vide.

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>