Logo de Cecil Cecil
Sur cette page

Fonctions

Les fonctions peuvent être appelées pour générer du contenu. Les fonctions sont appelées par leur nom suivi de parenthèses (()) et peuvent avoir des arguments.

url

Crée une URL valide pour une page, une entrée de menu, un asset, un ID de page ou un chemin.

{{ url(value, {options}) }}
Option Description Type Par défaut
canonical Préfixe l’URL avec baseurl ou utilise canonical.url s’il existe. booléen valeur de canonicalurl (false par défaut)
format Définit le format de sortie de la page (ex. : json). chaîne html
language Définit la langue de la page (ex. : fr). chaîne langue actuelle

Exemples :

{# page #}
{{ url(page) }}
{{ url(page, {canonical: true}) }}
{{ url(page, {format: 'json'}) }}
{{ url(page, {language: 'fr'}) }}
{# menu entry #}
{{ url(site.menus.main.about) }}
{# asset #}
{{ url(asset('styles.css')) }}
{# page ID #}
{{ url('page-id') }}
{# path #}
{{ url('about-me/') }}
{{ url('tags/' ~ tag) }}

html

Crée un élément HTML à partir d’un asset (ou d’un tableau d’assets avec des attributs personnalisés).

{{ html(asset, {attributes}, {options}) }}
{# dedicated functions for each common type of asset #}
{{ css(asset) }}
{{ js(asset) }}
{{ image(asset) }}
{{ audio(asset) }}
{{ video(asset) }}
Argument Description Type
attributes Ajoute le couple name="value" à l’élément HTML. tableau
options {preload: boolean} : précharge.
Pour les images :
{formats: array} : ajoute des formats alternatifs.
{responsive: bool|string} : ajoute des images responsives (basées sur la largeur, width, ou la densité de pixels, density).
{placeholder: string} : remplit l’arrière-plan de l’image avant son chargement (color ou lqip).
tableau

Exemples :

{# CSS with an attribute #}
{{ html(asset('print.css'), {media: 'print'}) }}
{# CSS with an attribute and an option #}
{{ html(asset('styles.css'), {title: 'Main theme'}, {preload: true}) }}
{# Array of assets with media query #}
{{ html([
  {asset: asset('css/style.css')},
  {asset: asset('css/style-dark.css'), attributes: {media: '(prefers-color-scheme: dark)'}}
]) }}
{# JavaScript #}
{{ html(asset('script.js')) }}
{# image without specific attributes nor options #}
{{ html(asset('image.png')) }}
{# image with specific attributes, responsive images and alternative formats #}
{{ html(asset('image.jpg'), {alt: 'Description', loading: 'lazy'}, {responsive: true, formats: ['avif', 'webp']}) }}
{# image with responsive pixels density images #}
{{ html(asset('image.jpg'), options={responsive: 'density'}, attributes={width: 256}) }}
{# image with a Low-Quality Image Placeholder #}
{{ html(asset('image.jpg'), {alt: 'Description', loading: 'lazy'}, {placeholder: 'lqip'}) }}
{# Audio #}
{{ html(asset('audio.mp3')) }}
{# Video #}
{{ html(asset('video.mp4')) }}

readtime

Détermine le temps de lecture d’un texte, en minutes (sur la base de 200 mots par minute, 1 minute minimum).

{{ readtime(value) }}

Exemple :

{{ readtime(page.content) }} min

hash

Calcule le hachage d’un objet, d’un tableau ou d’une chaîne avec un algorithme donné.

{{ hash(value, algorithm) }}

algorithm peut être n’importe quel algorithme pris en charge par la fonction hash() de PHP (ex. : md5, sha256, etc.). La valeur par défaut est xxh128.

Exemple :

{{ hash('my string', 'sha256') }}

cache_key

Calcule une clé pour le cache de fragments en fonction d’un nom et d’une valeur facultative.

{% cache cache_key(name, value) %}
  {# cacheable content #}
{% endcache %}

La fonction ajoute au nom un hachage de la valeur (qui peut être une chaîne, un tableau ou un objet), ainsi que la langue actuelle et l’ID de génération, pour garantir que la clé de cache générée est unique : si la valeur change, la clé de cache change aussi et une nouvelle entrée de cache est générée.

getenv

Obtient la valeur d’une variable d’environnement à partir de sa clé.

{{ getenv(var) }}

Exemple :

{{ getenv('VAR') }}

dump

La fonction dump affiche les informations sur une variable de template. C’est surtout utile pour déboguer un template qui ne se comporte pas comme prévu, en inspectant ses variables :

{{ dump(user) }}

d

La fonction d() est la version HTML de dump() et utilise le composant Symfony VarDumper en arrière-plan.

{{ d(variable, {theme: 'dark'}) }}
  • Si variable n’est pas fournie, la fonction affiche le contexte Twig actuel
  • Les thèmes disponibles sont light (par défaut) et dark

Tests

Les tests s’utilisent avec l’opérateur is.

Test Description
asset La variable est un asset.
image_large L’asset est une image au format paysage d’au moins 600 × 315 pixels (ex. : une image de couverture).
image_square L’asset est une image carrée (largeur et hauteur identiques).
enabled L’option est activée : true, un tableau associatif sans clé enabled ou avec enabled: true, ou toute autre valeur sauf false et null.
external L’URL (ou l’URL d’une entrée de menu) est externe : elle a un schéma (https:, mailto:, etc.) ou commence par //, et ne commence pas par baseurl.

Exemple :

{% set image = asset(page.image) %}
{% if image is image_large %}
  {{ html(image, {alt: page.title}) }}
{% endif %}
{% if config.cache is enabled %}
  {# `cache: false` et `cache: {enabled: false}` sont tous deux désactivés #}
{% endif %}
{% for item in site.menus.main|sort_by_weight %}
  <a href="{{ url(item.url) }}"{% if item is external %} rel="noopener" target="_blank"{% endif %}>{{ item.name }}</a>
{% endfor %}

Obsolètes

Les fonctions suivantes sont obsolètes (un avertissement de dépréciation est émis lorsqu’elles sont utilisées) :

Fonction Remplacement
minify() filtre minify
toCSS() filtre to_css
image_from_url() fonction image_from_website()