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) etdark
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() |