Sur cette page
Assets
Les assets sont des fichiers (feuilles de style, scripts, images, polices, etc.) que Cecil peut traiter et optimiser depuis vos templates.
asset
Un asset est une ressource utilisable dans les templates : CSS, JavaScript, image, audio, vidéo, etc.
La fonction asset() crée un objet asset à partir d’un chemin de fichier, d’un tableau de chemins de fichiers (bundle) ou d’une URL (fichier distant). L’asset est ensuite traité (compilé, minifié, doté d’une empreinte, etc.) selon la configuration.
Les fichiers sont recherchés dans le répertoire des assets (assets/ par défaut), puis dans le répertoire des fichiers statiques (static/ par défaut) et dans les thèmes.
{{ asset(path, {options}) }}
| Option | Description | Type | Par défaut |
|---|---|---|---|
| filename | Enregistre le bundle sous un nom de fichier personnalisé. | chaîne | styles.css ou scripts.js (bundle) |
| ignore_missing | N’interrompt pas la génération si le fichier est introuvable. | booléen | false |
| fingerprint | Ajoute l’empreinte (hash) du contenu au nom du fichier. | booléen | valeur de assets.fingerprint (true) |
| minify | Minifie le CSS ou le JavaScript. | booléen | valeur de assets.minify (true) |
| optimize | Optimise l’image. | booléen | valeur de assets.images.optimize (false) |
| fallback | Asset local à charger si le fichier distant est introuvable. | chaîne | vide |
| useragent | Chaîne d’agent utilisateur envoyée lors du téléchargement d’un fichier distant (voir la configuration des assets). | chaîne | valeur de assets.remote.useragent.default |
| language | Code de langue utilisé pour rechercher d’abord une version localisée du fichier (ex. : image.fr.jpg pour image.jpg). |
chaîne | null |
Exemples :
{# CSS #}
{{ asset('styles.css') }}
{# bundle CSS #}
{{ asset(['poole.css', 'hyde.css'], {filename: 'styles.css'}) }}
{# JavaScript #}
{{ asset('scripts.js') }}
{# image #}
{{ asset('image.jpeg') }}
{# image localisée (recherche d’abord « image.fr.jpeg ») #}
{{ asset('image.jpeg', {language: 'fr'}) }}
{# audio #}
{{ asset('audio.mp3') }}
{# vidéo #}
{{ asset('video.mp4') }}
{# fichier distant #}
{{ asset('https://cdnjs.cloudflare.com/ajax/libs/anchor-js/4.3.1/anchor.min.js', {minify: false}) }}
{# avec un filtre #}
{{ asset('styles.css')|minify }}
{{ asset('styles.scss')|to_css|minify }}
Attributs d’un asset
Les assets créés avec la fonction asset() exposent des attributs utiles.
Communs :
file: chemin dans le système de fichiersmissing:truesi le fichier est introuvable et queignore_missingest activépath: chemin publicext: extension du fichiertype: type de média (ex. :image)subtype: sous-type de média (ex. :image/jpeg)size: taille en octetscontent: contenu du fichierhash: empreinte du contenu du fichier (xxHash 128)dataurl: URL de données (data URL) encodée en Base64integrity: empreinte d’intégrité
Distant :
url: URL du fichier distant
Bundle :
files: tableau des chemins de fichiers, dans le cas d’un bundle
Image :
width: largeur de l’image en pixelsheight: hauteur de l’image en pixelsexif: données EXIF de l’image sous forme de tableau
Audio :
duration: durée en secondes.microsecondesgetAudio.bitrate: débit en bpsgetAudio.channel:stereo,dual_mono,joint_stereooumono
Vidéo :
duration: durée en secondeswidth: largeur en pixelsheight: hauteur en pixels
Exemples :
{# largeur de l’image en pixels #}
{{ asset('image.png').width }}px
{# date de la photo en timestamp Unix #}
{{ asset('photo.jpeg').exif.EXIF.DateTimeOriginal|date('U') }}
{# durée de l’audio en secondes #}
{{ asset('song.mp3').duration|round }} s
{# débit de l’audio #}
{{ asset('song.mp3').getAudio.bitrate }} bps
{# durée de la vidéo en secondes #}
{{ asset('movie.mp4').duration|round }} s
{# empreinte d’intégrité du fichier #}
{% set integrity = asset('styles.scss').integrity %}
integrity
Crée l’empreinte (sha384 par défaut) d’un fichier (à partir d’un asset ou d’un chemin).
{{ integrity(asset, algo) }}
Utilisée pour le SRI (Subresource Integrity).
Exemples :
{{ integrity('styles.css') }}
{# sha384-oGDH3qCjzMm/vI+jF4U5kdQW0eAydL8ZqXjHaLLGduOsvhPRED9v3el/sbiLa/9g #}
{{ integrity('styles.css', 'sha512') }}
Tests
Tests Twig pour vérifier les assets :
asset: la variable est un assetimage_large: l’asset est une image au format paysage d’au moins 600×315 pixelsimage_square: l’asset est une image dont la largeur et la hauteur sont égales
Exemple :
{% set image = asset(page.image) %}
{% if image is image_large %}
<meta name="twitter:card" content="summary_large_image">
{% endif %}