Filtres¶
Les filtres transforment les données dans les expressions en utilisant Liquid — un standard de langage de templating. Chaque filtre prend une valeur en entrée, applique une transformation et produit une nouvelle valeur.
Les filtres sont chaînés dans les expressions. Exemple : posts → first → title → upcase utilise trois filtres (first, title est une propriété de navigation, upcase est un filtre).
Cette page documente chaque filtre disponible avec son type d'entrée/sortie, ses options et ses exemples.
Filtres de chaînes de caractères¶
Ces filtres fonctionnent sur les valeurs textuelles.
strip_html¶
Supprime toutes les balises HTML d'une chaîne.
Entrée : String (par exemple, <p>Hello <strong>world</strong></p>)
Sortie : String (par exemple, Hello world)
Options : Aucune
Exemple : post_content → strip_html supprime le HTML des champs de texte enrichi
append¶
Ajoute du texte à la fin d'une chaîne.
Entrée : String
Sortie : String
Options : value (texte à ajouter)
Exemple : post_title → append(" - Blog") transforme "My Post" en "My Post - Blog"
prepend¶
Ajoute du texte au début d'une chaîne.
Entrée : String
Sortie : String
Options : value (texte à préfixer)
Exemple : post_title → prepend("New: ") transforme "My Post" en "New: My Post"
upcase¶
Convertit une chaîne en majuscules.
Entrée : String
Sortie : String
Options : Aucune
Exemple : post_title → upcase transforme "hello" en "HELLO"
downcase¶
Convertit une chaîne en minuscules.
Entrée : String
Sortie : String
Options : Aucune
Exemple : post_title → downcase transforme "Hello" en "hello"
capitalize¶
Met en majuscule le premier caractère et met le reste en minuscules.
Entrée : String
Sortie : String
Options : Aucune
Exemple : "hello WORLD" → capitalize devient "Hello world"
replace¶
Remplace toutes les occurrences d'une sous-chaîne par une autre.
Entrée : String
Sortie : String
Options : search (texte à trouver), replace (texte de remplacement)
Exemple : "Hello World" → replace("World", "Silex") devient "Hello Silex"
replace_first¶
Remplace uniquement la première occurrence d'une sous-chaîne.
Entrée : String
Sortie : String
Options : search, replace
Exemple : "aaa" → replace_first("a", "b") devient "baa"
replace_last¶
Remplace uniquement la dernière occurrence d'une sous-chaîne.
Entrée : String
Sortie : String
Options : search, replace
Exemple : "aaa" → replace_last("a", "b") devient "aab"
remove¶
Supprime toutes les occurrences d'une sous-chaîne (équivalent à replace avec une chaîne vide).
Entrée : String
Sortie : String
Options : search (texte à supprimer)
Exemple : "Hello World" → remove("World") devient "Hello "
remove_first¶
Supprime uniquement la première occurrence d'une sous-chaîne.
Entrée : String
Sortie : String
Options : search
Exemple : "aaa" → remove_first("a") devient "aa"
remove_last¶
Supprime uniquement la dernière occurrence d'une sous-chaîne.
Entrée : String
Sortie : String
Options : search
Exemple : "aaa" → remove_last("a") devient "aa"
truncate¶
Raccourcit une chaîne à une longueur maximale.
Entrée : String
Sortie : String
Options : length (nombre max de caractères, par défaut 50)
Exemple : "This is a very long sentence" → truncate(10) devient "This is a "
truncatewords¶
Raccourcit une chaîne à un nombre maximum de mots.
Entrée : String
Sortie : String
Options : length (nombre max de mots, par défaut 15)
Exemple : "This is a very long sentence" → truncatewords(3) devient "This is a"
escape¶
Échappe les guillemets doubles dans une chaîne.
Entrée : String
Sortie : String
Options : Aucune
Exemple : post_title → escape convertit "Hello" en \"Hello\"
escape_once¶
Échappe les guillemets doubles (une seule fois, même si déjà échappés).
Entrée : String Sortie : String Options : Aucune
newline_to_br¶
Convertit les sauts de ligne (\n) en balises HTML de saut de ligne (<br />).
Entrée : String
Sortie : String
Options : Aucune
Exemple : "Line 1\nLine 2" → newline_to_br devient "Line 1<br />Line 2"
strip_newlines¶
Supprime tous les sauts de ligne d'une chaîne.
Entrée : String
Sortie : String
Options : Aucune
Exemple : "Line 1\nLine 2" → strip_newlines devient "Line 1Line 2"
Filtres de tableaux¶
Ces filtres fonctionnent sur les listes.
where¶
Filtre une liste pour ne garder que les éléments correspondant à une condition.
Entrée : Liste d'objets
Sortie : Liste d'objets
Options : key (nom du champ), value (valeur à rechercher)
Exemple : posts → where(category = "news") renvoie uniquement les articles de la catégorie actualités
find¶
Renvoie le premier élément d'une liste correspondant à une condition.
Entrée : Liste d'objets
Sortie : Un objet
Options : key, value
Exemple : posts → find(id = 5) renvoie l'article avec l'id 5
first¶
Renvoie le premier élément d'une liste.
Entrée : Liste
Sortie : Un élément
Options : Aucune
Exemple : posts → first renvoie le premier article
last¶
Renvoie le dernier élément d'une liste.
Entrée : Liste
Sortie : Un élément
Options : Aucune
Exemple : posts → last renvoie le dernier article
join¶
Joint une liste de chaînes en une seule chaîne avec un séparateur.
Entrée : Liste de chaînes
Sortie : String
Options : separator (ce qui est placé entre les éléments, par défaut ",")
Exemple : tags → join(", ") joint les tags avec des virgules : "tag1, tag2, tag3"
split¶
Divise une chaîne en une liste en utilisant un séparateur.
Entrée : String
Sortie : Liste de chaînes
Options : separator (ce sur quoi diviser, par défaut ",")
Exemple : "tag1, tag2, tag3" → split(", ") devient une liste de trois tags
map¶
Extrait un champ spécifique de chaque élément d'une liste.
Entrée : Liste d'objets
Sortie : Liste de valeurs
Options : key (nom du champ à extraire)
Exemple : posts → map(title) extrait tous les titres d'articles dans une liste
reverse¶
Inverse l'ordre d'une liste.
Entrée : Liste
Sortie : Liste (inversée)
Options : Aucune
Exemple : posts → reverse renvoie les articles dans l'ordre inverse
size¶
Renvoie le nombre d'éléments dans une liste (ou de caractères dans une chaîne).
Entrée : Liste ou String
Sortie : Number
Options : Aucune
Exemple : posts → size renvoie le nombre d'articles
slice¶
Extrait une portion d'une liste par index de début et de fin.
Entrée : Liste
Sortie : Liste
Options : start (index de début), end (index de fin)
Exemple : posts → slice(0, 3) renvoie les 3 premiers éléments
sort¶
Trie une liste d'objets par un nom de champ (alphabétiquement ou numériquement).
Entrée : Liste d'objets
Sortie : Liste (triée)
Options : key (champ de tri)
Exemple : posts → sort(title) trie les articles alphabétiquement par titre
compact¶
Supprime les éléments vides/null/false d'une liste.
Entrée : Liste
Sortie : Liste (sans valeurs vides)
Options : Aucune
Exemple : authors → compact supprime les entrées d'auteur null
sample¶
Choisit un ou plusieurs éléments aléatoires dans une liste.
Entrée : Liste
Sortie : Liste ou élément unique
Options : count (nombre d'éléments à choisir, par défaut 1)
Exemple : posts → sample(3) renvoie 3 articles aléatoires
Filtres mathématiques¶
Ces filtres fonctionnent sur les nombres.
plus¶
Ajoute un nombre à un autre nombre.
Entrée : Number
Sortie : Number
Options : value (nombre à ajouter)
Exemple : price → plus(10) ajoute 10 au prix
minus¶
Soustrait un nombre.
Entrée : Number
Sortie : Number
Options : value (nombre à soustraire)
Exemple : price → minus(5) soustrait 5 du prix
times¶
Multiplie un nombre.
Entrée : Number
Sortie : Number
Options : value (nombre par lequel multiplier)
Exemple : quantity → times(2) double la quantité
divided_by¶
Divise un nombre.
Entrée : Number
Sortie : Number
Options : value (nombre par lequel diviser)
Exemple : total → divided_by(2) divise le total par 2
modulo¶
Renvoie le reste après division.
Entrée : Number
Sortie : Number
Options : value (diviseur)
Exemple : count → modulo(2) renvoie 0 si pair, 1 si impair
ceil¶
Arrondit au nombre entier supérieur.
Entrée : Number
Sortie : Integer
Options : Aucune
Exemple : 3.2 → ceil devient 4
floor¶
Arrondit au nombre entier inférieur.
Entrée : Number
Sortie : Integer
Options : Aucune
Exemple : 3.8 → floor devient 3
round¶
Arrondit au nombre entier le plus proche.
Entrée : Number
Sortie : Integer
Options : Aucune
Exemple : 3.5 → round devient 4
abs¶
Renvoie la valeur absolue (positive).
Entrée : Number
Sortie : Number
Options : Aucune
Exemple : -5 → abs devient 5
at_least¶
Renvoie le plus grand entre le nombre et une valeur minimale.
Entrée : Number
Sortie : Number
Options : value (minimum)
Exemple : price → at_least(10) garantit que le prix est au moins 10
at_most¶
Renvoie le plus petit entre le nombre et une valeur maximale.
Entrée : Number
Sortie : Number
Options : value (maximum)
Exemple : discount → at_most(50) garantit que la réduction ne dépasse pas 50
Filtres de dates¶
date¶
Formate une chaîne de date en utilisant une chaîne de format.
Entrée : String (date au format ISO, par exemple, "2025-03-27")
Sortie : String (formatée, par exemple, "Mar 27, 25")
Options : format (chaîne de format utilisant les codes %), timeZone (fuseau horaire IANA, par défaut "UTC")
Codes de format :
- %Y — année à 4 chiffres (2025)
- %y — année à 2 chiffres (25)
- %m — mois à 2 chiffres (03)
- %d — jour à 2 chiffres (27)
- %b — nom abrégé du mois (Mar)
- %a — nom abrégé du jour de la semaine (Thu)
- %H — heure à 2 chiffres (14)
- %M — minute à 2 chiffres (30)
- %S — seconde à 2 chiffres (45)
Exemple : post_date → date("%a, %b %d, %Y") formate "2025-03-27" en "Thu, Mar 27, 2025"
Fuseaux horaires : Utilisez les noms de fuseaux horaires IANA standard : UTC, Europe/Paris, America/New_York, Asia/Tokyo, etc.
Combinaisons de filtres¶
Vous pouvez chaîner les filtres ensemble pour combiner les transformations.
Exemple 1 : liste de dates d'articles formatées
Obtient tous les articles, extrait les dates de publication, prend la première et la formate.Exemple 2 : extrait d'article sans HTML
Raccourcit le contenu à 200 caractères et supprime les balises HTML.Exemple 3 : nombre d'articles publiés
Filtre les articles publiés et les compte.Erreurs courantes¶
- Utiliser un filtre sur le mauvais type de données.
upcasene fonctionne que sur les chaînes. Silex empêchera cela dans l'éditeur. - Oublier les options du filtre. Certains filtres nécessitent des options (
wherea besoin dekeyetvalue). L'éditeur vous les demandera. - Chaîner des filtres incompatibles. Si un filtre produit un nombre, le filtre suivant doit accepter un nombre. Faites attention aux types d'entrée/sortie.
- Ne pas échapper les caractères spéciaux dans les options. Si votre valeur
wherecontient des guillemets, assurez-vous qu'elle est correctement encadrée.
En savoir plus¶
- Expressions — comment les filtres s'intègrent dans les expressions
- Lier les données — utiliser les filtres dans les états
- Boucles et listes — filtrer les listes pour les boucles
- Documentation Liquid — référence du comportement des filtres
Quiz¶
Q1 : Vous souhaitez extraire les 3 premiers mots d'un titre d'article. Quel filtre utilisez-vous ?
- A)
truncate - B)
truncatewords - C)
slice
Réponse
B) truncatewords — truncatewords limite une chaîne à un nombre de mots. truncate limite les caractères. slice fonctionne sur les tableaux.
Q2 : Vous avez une liste d'articles et souhaitez obtenir uniquement ceux publiés dans la catégorie "news". Quel filtre utilisez-vous ?
- A)
find - B)
where - C)
slice
Réponse
B) where — where filtre une liste par condition. find renvoie la première correspondance. slice extrait une plage par index.
Q3 : Vous souhaitez ajouter "$" au début d'un prix. Quel(s) filtre(s) chaînez-vous ?
- A)
prepend("$") - B)
plus("$") - C)
append("$")
Réponse
A) prepend("$") — prepend ajoute au début. append ajoute à la fin. plus sert à additionner des nombres.
Q4 : Vous souhaitez afficher le nombre d'articles de blog. Quelle expression renvoie un nombre ?
- A)
posts - B)
posts → size - C)
posts → count
Réponse
B) posts → size — size renvoie le nombre d'éléments dans une liste. posts seul renvoie la liste elle-même, pas un compte.
Q5 : Vous avez une date "2025-03-27" et souhaitez l'afficher comme "27/03/2025". Quelle chaîne de format de date utilisez-vous ?
- A)
%d/%m/%Y - B)
%Y/%m/%d - C)
%d-%m-%Y
Réponse
A) %d/%m/%Y — %d est le jour, %m est le mois, %Y est l'année à 4 chiffres. Cela produit jour/mois/année.