Logo de Cecil Cecil
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