Exemple d’utilisation du filtre ? ( sinon ) de SPIP 1.8

Mon objectif était le suivant : classer une liste de site par numéro, en supprimant le numéro et en affichant soit le logo du sites soit le titre du site si le logo n’existait pas.

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)]
  1. le test sur LOGO_SITE retourne une chaîne vide quand il existe, donc le code optionnel après ne sera pas affiché.
  2. 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!

Footnotes

updated on 7 December 2006

Discussion

3 discussions

  • Reply to this message

  • Madrilene

    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.

    Reply to this message

  • 1

    Bonjour,

    Je cherche un peu la même chose.

    Mais pour LOGO RUBRIQUE. Si la rubrique a un LOGO, on l’affiche, si elle n’en a pas, on affiche une image.

    As tu une idée, car je n’ai pas réussi avec ce filtre ?

    Merci

    • Le morceau à remplacer est (#NOM_SITE donc ça doit donner quelque chose comme :

      [(#LOGO_SITE||?{'',' '})<img src="./....." width="..." height="..." title="......" alt="......">]
      [<img src="./IMG/(#LOGO_SITE|fichier)" title="[(#NOM_SITE|supprimer_numero)]" alt="[(#NOM_SITE|supprimer_numero)]" width="[(#LOGO_SITE||largeur)]" height="[(#LOGO_SITE||hauteur)]">]

      Dans alt et title tu peux mettre (#NOM_SITE si tu veux que ça indique le nom du site.

      Le premier affiche l’image s’il n’y pas de logo et uniquement s’il n’y a pas de logo. Le deuxième affiche le logo s’il existe.

    Reply to this message

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom