Sur cette page
Filtres
Les variables peuvent être modifiées par des filtres. Les filtres sont séparés de la variable par un symbole de barre verticale (|). Plusieurs filtres peuvent être chaînés. La sortie d’un filtre est appliquée au suivant.
{{ page.title|truncate(25)|capitalize }}
filter_by
Filtre une collection de pages par nom/valeur de variable.
{{ collection|filter_by(variable, value) }}
Seules les pages standards (de type page, hors redirections) sont renvoyées.
Exemple :
{{ pages|filter_by('section', 'blog') }}
filter
Pour les cas plus complexes, il est préférable d’utiliser le filtre natif filter de Twig.
Exemple :
{% set filtered = pages|filter(p => p.generated == false and p.id not in ['page-1', 'page-2']) %}
markdown_to_html
Convertit une chaîne Markdown en HTML.
{{ markdown|markdown_to_html }}
{% apply markdown_to_html %}
{# Markdown here #}
{% endapply %}
Exemples :
{% set markdown = '**This is bold text**' %}
{{ markdown|markdown_to_html }}
{% apply markdown_to_html %}
**This is bold text**
{% endapply %}
toc
Extrait uniquement les titres correspondant aux selectors donnés (h2, h3, etc.), ou à ceux définis dans la configuration pages.body.toc s’ils ne sont pas spécifiés.
Le paramètre format définit le format de sortie : html (par défaut) ou json.
Le paramètre url est utilisé pour créer les liens vers les titres.
{{ markdown|toc(format, selectors, url) }}
Exemples :
{{ page.body|toc }}
{{ page.body|toc('html') }}
{{ page.body|toc(selectors=['h2']) }}
{{ page.body|toc(url=url(page)) }}
json_decode
Convertit une chaîne JSON en tableau.
{{ json|json_decode }}
Exemple :
{% set json = '{"foo": "bar"}' %}
{% set array = json|json_decode %}
{{ array.foo }}
yaml_parse
Convertit une chaîne YAML en tableau.
{{ yaml|yaml_parse }}
Exemple :
{% set yaml = 'key: value' %}
{% set array = yaml|yaml_parse %}
{{ array.key }}
slugify
Convertit une chaîne en slug.
{{ string|slugify }}
u
Le filtre u enveloppe un texte dans un objet Unicode (une instance Symfony UnicodeString) qui expose des méthodes pour « manipuler » la chaîne.
Exemple :
{{ 'cecil_string with twig'|u.camel.title }}
CecilStringWithTwig
singular
Le filtre singular transforme un nom donné au pluriel en sa version au singulier.
{{ string|singular(locale) }}
Exemple :
{# English (en) rules are used by default #}
{{ 'partitions'|singular }}
partition
{{ 'partitions'|singular('fr') }}
partition
plural
Le filtre plural transforme un nom donné au singulier en sa version au pluriel.
{{ string|plural(locale) }}
Exemple :
{# English (en) rules are used by default #}
{{ 'animal'|plural }}
animals
{{ 'animal'|plural('fr') }}
animaux
excerpt
Tronque une chaîne et ajoute un suffixe.
{{ string|excerpt(length, suffix) }}
| Option | Description | Type | Par défaut |
|---|---|---|---|
| length | Tronque après ce nombre de caractères. | entier | 450 |
| suffix | Ajoute des caractères. | chaîne | ' …' (espace et points de suspension) |
Exemples :
{{ variable|excerpt }}
{{ variable|excerpt(250, '...') }}
excerpt_html
Lit les caractères avant ou après la balise <!-- excerpt --> ou <!-- break -->.
Voir la documentation du contenu pour plus de détails.
{{ string|excerpt_html({separator, capture}) }}
| Option | Description | Type | Par défaut |
|---|---|---|---|
| separator | Chaîne à utiliser comme séparateur. | chaîne | excerpt|break |
| capture | Partie à capturer, before ou after le séparateur. |
chaîne | before |
Les valeurs par défaut sont définies par la configuration pages.body.excerpt.
Exemples :
{{ variable|excerpt_html }}
{{ variable|excerpt_html({separator: 'excerpt|break', capture: 'before'}) }}
{{ variable|excerpt_html({capture: 'after'}) }}
highlight
Met en surbrillance une chaîne de code.
{{ code|highlight(language, engine) }}
Le moteur de coloration (highlightjs ou tempest) est l’argument optionnel engine ou, par défaut, l’option layouts.highlight.engine (highlightjs par défaut).
Si le langage n’est pas pris en charge par le moteur, le code est retourné échappé, sans coloration (et un avertissement est journalisé).
Exemples :
{{ '<?php echo $highlighted->value; ?>'|highlight('php') }}
{{ '<?php echo $highlighted->value; ?>'|highlight('php', 'tempest') }}
preg_split
Divise une chaîne en un tableau à l’aide d’une expression régulière (limit vaut 0, c’est-à-dire sans limite, par défaut).
{{ string|preg_split(pattern, limit) }}
Exemple :
{% set headers = page.content|preg_split('/<br[^>]*>/') %}
preg_match_all
Effectue une correspondance d’expression régulière et renvoie le groupe pour toutes les correspondances (group vaut 0, c’est-à-dire la correspondance complète, par défaut).
{{ string|preg_match_all(pattern, group) }}
Exemple :
{% set tags = page.content|preg_match_all('/<[^>]+>(.*)<\/[^>]+>/') %}
hex_to_rgb
Convertit une couleur hexadécimale en RVB : renvoie un tableau avec les clés red, green et blue.
{{ color|hex_to_rgb }}
Exemple :
{% set rgb = '#f00'|hex_to_rgb %}
rgb({{ rgb.red }}, {{ rgb.green }}, {{ rgb.blue }})
rgb(255, 0, 0)
splitline
Divise une chaîne en un tableau de lignes de max caractères maximum (18 par défaut), sans couper les mots.
{{ string|splitline(max) }}
Exemple :
{% for line in 'The quick brown fox jumps'|splitline(10) %}
{{ line }}<br>
{% endfor %}
The quick
brown fox
jumps
iterable
Convertit une variable en itérable (tableau) : un tableau est renvoyé tel quel, un objet itérable est converti en tableau, et toute autre valeur est placée dans un tableau.
{{ variable|iterable }}
Exemple :
{% for author in page.authors|iterable %}
{{ author }}
{% endfor %}
unique
Supprime les valeurs en double d’un tableau de chaînes (sans tenir compte de la casse : la première occurrence est conservée).
{{ array|unique }}
Exemple :
{{ ['PHP', 'php', 'Twig']|unique|join(', ') }}
PHP, Twig
duration_to_iso8601
Convertit une durée en secondes en durée ISO 8601 (ex. : pour la duration d’une vidéo dans les données structurées).
{{ seconds|duration_to_iso8601 }}
Exemple :
{{ 125|duration_to_iso8601 }}
PT00H00M125S