racine uZine

Dans la même rubrique
Mise en page : manuel de référence
26 mai 2003
16 août 2002
15 juin 2002
11 décembre 2001
7 décembre 2001
2 juin 2001
24 mai 2001
22 mai 2001
20 mai 2001
18 mai 2001
16 mai 2001
14 mai 2001
 
jeudi 3 mai 2001

Les filtres de SPIP

par l’équipe de SPIP

Nous avons vu dans la syntaxe des balises SPIP qu’il était possible de modifier le comportement et l’affichage des balises en leur attribuant des filtres.

[ option avant (#BALISE|filtre1|filtre2|...|filtren) option après ]

Les filtres 1, 2, ..., n sont appliqués successivement à la #BALISE.

Les filtres de mise en page

- majuscules fait passer le texte en majuscules. Par rapport à la fonction de PHP, majuscules s’applique également aux lettres accentuées.

- justifier fait passer le texte en justification totale (<P align=justify>).

- aligner_droite fait passer le texte en justification à droite (<P align=right>).

- aligner_gauche fait passer le texte en justification à gauche (<P align=left>).

- centrer centre le texte (<P align=center>).

Les filtres des dates

Les filtres suivants s’appliquent aux dates ((#DATE par exemple).

- affdate affiche la date en français, par exemple « 13 janvier 2001 ».

- jour affiche le jour (en nombre).

- mois affiche le mois (en nombre).

- annee affiche l’année.

- [SPIP 1.0.2] heures affiche les heures d’une date (les dates fournies par SPIP contiennent non seulement le jour, mais également les horaires).

- [SPIP 1.0.2] minutes affiche les minutes d’une date.

- [SPIP 1.0.2] secondes affiche les secondes.

- nom_jour affiche le nom du jour (lundi, mardi...).

- nom_mois affiche le nom du mois (janvier, février...).

- saison affiche la saison (hiver, été...).

Filtres de logos

- fichier [SPIP 1.4]. Affecté à un logo, ce filtre permet de récupérer directement le nom de fichier correspondant au logo.

- ||autres filtres Contrairement aux versions précédentes, [SPIP 1.4] permet de passer des filtres « maison » sur les logos : la logique est un peu tordue, car il fallait respecter la compatibilité avec SPIP 1.3. L’analyse se déroule comme suit :

  • si le premier « filtre » n’est pas un alignement, SPIP considère qu’il s’agit d’un URL et fait un lien du logo vers cette adresse ;
  • si le premier filtre est un alignement, SPIP considère que le deuxième « filtre » est un URL ;
  • les filtres suivants sont de vrais filtres au sens habituel (y compris des filtres « maison » déclarés dans mes_fonctions.php3 ;
  • pour appliquer un filtre quelconque sans mettre d’URL, il faut mettre deux barres. Par exemple :
    <?php $logo = '[(#LOGO_RUBRIQUE||texte_script)]'; ?> permet de récupérer le logo dans la variable php $logo, pour traitement ultérieur (voir ci-dessous pour la signification de |texte_script).

Filtres de texte

La plupart de ces filtres ont été introduits dans la version [SPIP 1.4]

- liens_ouvrants transforme les liens SPIP qui donnent vers des sites extérieurs en liens de type « popup », qui ouvrent dans une nouvelle fenetre ; c’est l’équivalent du target=blank du HTML. N.B. : les développeurs de SPIP estiment qu’il s’agit en général d’une impolitesse, car les internautes savent très bien s’ils ont envie ou pas d’ouvrir une nouvelle fenêtre - or ce système le leur impose. Mais la demande était trop forte, et nous avons craqué ;-)

- supprimer_numero sert à éliminer le numéro d’un titre, si par exemple on veut faire des tris d’articles {par num titre} mais ne pas afficher les numéros (car ils ne servent qu’à ordonner les articles).

- PtoBR transforme les sauts de paragraphe en simples passages a la ligne, ce qui permet de « resserrer » une mise en page, par exemple à l’intérieur d’un sommaire

- taille_en_octets permet de transformer un nombre d’octets (25678906) en une chaîne de caractères plus explicite (« 24.4 Mo »).

- supprimer_tags est une suppression basique et brutale de tous les <...>

- textebrut s’apparente au filtre supprimer_tags, mais il agit de manière un peu plus subtile, transformant notamment les paragraphes et <br> en sauts de ligne, et les espaces insécables en espaces simples. Utilisation, par exemple, pour faire un descriptif META à partir du #DESCRIPTIF : [<meta name='description' content='(#DESCRIPTIF|textebrut)'>]

Filtres techniques

Ces filtres ont été introduits par [SPIP 1.4].

- entites_html transforme un texte en entités HTML, que l’on peut donc implanter dans un formulaire, exemple : [<textarea>(#DESCRIPTIF|entites_html)</textarea>]

- texte_script transforme n’importe quel champ en une chaîne utilisable en PHP ou Javascript en toute securité, exemple : <?php $x = '[(#TEXTE|texte_script)]'; ?>. Attention : utilisez bien le caractère ' et non " : en effet, dans le second cas, si votre texte contient le symbole $, le résultat peut être catastrophique (affichage partiel, affichage d’autre chose, plantage php, etc.).

- attribut_html rend une chaîne utilisable sans dommage comme attribut HTML ; par exemple, si l’on veut ajouter un texte de survol au lien normal vers un article, on utilisera

<a href="#URL_ARTICLE" [ title = "(#DESCRIPTIF|supprimer_tags|attribut_html)" ]>#TITRE</a>.

- [SPIP 1.6] introduit le filtre |sinon, qui indique ce qu’il faut afficher si l’élément « filtré » est vide : ainsi [(#TEXTE|sinon{"pas de texte"})] affiche le texte ; si celui-ci est vide, affiche « pas de texte ».

Ajouter ses propres fonctions

Les filtres de SPIP sont des fonctions PHP à une seule variable. Vous pouvez utiliser directement les fonctions habituelles de PHP, mais également créer les vôtres, sur le modèle :

<?php
function mon_filtre($texte){
   $texte = (bidouillages en PHP) ...;
   return $texte;
}
?>

Afin de ne pas avoir à modifier des fichiers de SPIP (qui risqueraient d’être écrasés lors d’une prochaine mise à jour), vous pouvez installer vos fonctions personnelles dans un fichier mes_fonctions.php3 : si SPIP repère un fichier ayant ce nom, il l’inclut automatiquement.

Par exemple, ARNO* a développé le filtre enlettres, qui n’est pas inclus dans la distribution standard de SPIP. Ce filtre écrit un nombre en toutes lettres ( [(#DATE|annee|enlettres)] = « deux mille deux ») ; ce filtre peut être téléchargé sur http://www.uzine.net/spip_contrib/a... ; il suffit de l’ajouter dans votre fichier mes_fonctions.php3 pour l’utiliser.

Depuis [SPIP 1.5], il est possible de passer des paramètres dans les filtres. La syntaxe est

Le filtre doit être défini de la manière suivante dans mes_fonctions.php3 :

On peut ainsi appeler n’importe quelle fonction php, ou s’appuyer sur des fonctions définies dans SPIP ou dans mes_fonctions.php3, pour peu qu’elles respectent l’ordre des arguments (le texte à traiter doit être impérativement le premier argument). Par exemple, pour couper le texte à une longueur donnée (50 caractères), on pourra utiliser [(#TEXTE|couper{50})].

 
 
l’équipe de SPIP
Imprimer
format impression
l’équipe de SPIP
12 juin 2001
23 septembre 2001
23 septembre 2001
26 mai 2003
2 septembre 2002
 
SPIP
Web indépendant


> 17. Les filtres de SPIP
24 août 2001, message de Perline
 

Dans les filtres qu’on ne peut pas maîtriser, il faut noter que le û et le Û sont remplacés dans le nom du mois non pas par le û mais par le ž (ž).

Ce qui est disgracieux !

Répondre


> 17. Les filtres de SPIP
24 août 2001, message de Perline
 

Dans les filtres qu’on ne peut pas maîtriser, il faut noter que le û et le Û sont remplacés dans le nom du mois non pas par le û mais par le ž (ž).

Ce qui est disgracieux !

Répondre