Sur cette page
Variables
L'application transmet des variables aux templates pour manipulation dans le modèle. Les variables peuvent également avoir des attributs ou des éléments auxquels vous pouvez accéder. Utilisez un point (.) pour accéder aux attributs d'une variable :
{{ foo.bar }}
Vous pouvez utiliser des variables de différentes portées : site, page, cecil.
site
La variable site contient des variables intégrées et celles définies dans la configuration.
| Variables | Descriptif |
|---|---|
site.pages | Collection de toutes les pages, dans la langue actuelle. |
site.allpages | Collection de toutes les pages, dans toutes les langues. |
site.page(id) | Une page avec l'ID donné. |
site.taxonomies | Recueil de vocabulaires. |
site.home | ID de la page d'accueil. |
site.time | Actuel Timestamp. |
site.debug | État du mode débogage (true ou false). |
site.build | ID de build actuel. |
Exemple:
title: "My amazing website!" Peut être affiché dans un modèle avec :
{{ site.title }} site.menus
Bouclez sur site.menus.<menu> pour obtenir chaque entrée de la collection <menu> (par exemple : main).
| Variables | Descriptif |
|---|---|
<entry>.name | Nom de l'entrée. |
<entry>.url | URL d'entrée. |
<entry>.weight | Poids d'entrée (utile pour trier les entrées de menu). |
Exemple:
<nav>
<ol>
{% for entry in site.menus.main|sort_by_weight %}
<li><a href="{{ url(entry.url) }}" data-weight="{{ entry.weight }}">{{ entry.name }}</a></li>
{% endfor %}
</ol>
</nav> site.language
Informations sur la langue actuelle.
| Variables | Descriptif |
|---|---|
site.language | Code de langue (ex. : en). |
site.language.name | Nom de la langue (par exemple : English). |
site.language.locale | Langue code local (par exemple : en_US). |
site.language.weight | Position de la langue dans la liste languages. |
site.static
La collection de fichiers statiques est accessible via site.static si le static load est activé.
Chaque fichier expose les propriétés suivantes :
path: chemin relatif (ex. :/images/img-1.jpg)date: date de création (timestamp)updated: date de modification (timestamp)name: nom (ex. :img-1.jpg)basename: nom sans extension (ex. :img-1)ext: poste (ex. :jpg)type: type de média (ex. :image)subtype: sous-type de média (ex. :image/jpeg)exif: données EXIF de l'image (array)audio: Mp3Info objetvideo: tableau d'informations vidéo de base (durée en secondes, largeur et hauteur)
site.data
Une collection de données est accessible via site.data.<filename> (sans extension de fichier).
Exemples :
data/authors.yml:site.data.authorsdata/authors.fr.yml:site.data.authors(sisite.language= "fr")data/galleries/gallery-1.json:site.data.galleries['gallery-1']
page
La variable page contient les variables intégrées d'une page et celles définies dans le avant-plan.
| Variables | Descriptif | Exemple |
|---|---|---|
page.id | Identifiant unique. | blog/post-1 |
page.title | Nom du fichier (sans extension). | Post 1 |
page.date | Date de création du fichier. | DateHeure |
page.body | Corps du fichier. | Marquage |
page.content | Corps du fichier converti en HTML. | HTML |
page.section | Dossier racine du fichier (slugified). | blog |
page.path | Chemin du fichier (slugified). | blog/post-1 |
page.slug | Nom du fichier (slugified). | post-1 |
page.filepath | Chemin du système de fichiers. | Blog/Post 1.md |
page.type | homepage, page, section, vocabulary ou term. | page |
page.pages | Collection de toutes les sous-pages. | Collection |
page.translations | Collection de pages traduites. | Collection |
Sections imbriquées
Dans un contexte de sections imbriquées, les propriétés page.parent, page.ancestors, page.sections et page.toplevel facilitent la construction de la navigation.
| Variables | Descriptif | Exemple |
|---|---|---|
page.parent | Page de la section parente (null si aucune). | Page |
page.ancestors | Collection des sections ancêtres (la plus proche en premier). | Collection |
page.sections | Collection des sections descendantes immédiates. | Collection |
page.toplevel | true si la page est une section de premier niveau. | Boolean |
Fil d'Ariane (de la page d'accueil à la page courante) :
<nav aria-label="breadcrumb">
<ul>
<li><a href="{{ url(site.home) }}">{{ site.title }}</a></li>
{% for section in page.ancestors|reverse %}
<li><a href="{{ url(section) }}">{{ section.title }}</a></li>
{% endfor %}
{% if page.id != site.home %}
<li><a href="{{ url(page) }}" aria-current="page">{{ page.title }}</a></li>
{% endif %}
</ul>
</nav> Menu des sous-sections (sections descendantes immédiates de la section courante) :
{% if page.sections|length %}
<ul>
{% for section in page.sections|sort_by_title %}
<li><a href="{{ url(section) }}">{{ section.title }}</a></li>
{% endfor %}
</ul>
{% endif %} Navigation principale limitée aux sections de premier niveau (depuis n'importe quelle page) :
<nav>
{% for section in site.page(site.home).sections|sort_by_title %}
<a href="{{ url(section) }}">{{ section.title }}</a>
{% endfor %}
</nav> Lien vers la section parente :
{% if page.parent %}
<a href="{{ url(page.parent) }}">← {{ page.parent.title }}</a>
{% endif %} page.<prev/next>
Navigation entre les pages d'une même Section.
| Variables | Descriptif | Exemple |
|---|---|---|
page.prev | Page précédente. | Page |
page.next | Page suivante. | Page |
Exemple:
<a href="{{ url(page.prev) }}">{{ page.prev.title }}</a> page.paginator
Paginator vous aide à créer une navigation pour les pages de la liste : page d'accueil, sections et taxonomies.
| Variables | Descriptif |
|---|---|
page.paginator.pages | Collection de pages. |
page.paginator.pages_total | Nombre total de pages. |
page.paginator.count | Nombre de pages du paginateur. |
page.paginator.current | Index de position de la page actuelle. |
page.paginator.links.first | ID de page de la première page. |
page.paginator.links.prev | ID de page de la page précédente. |
page.paginator.links.self | ID de page de la page actuelle. |
page.paginator.links.next | ID de page de la page suivante. |
page.paginator.links.last | ID de page de la dernière page. |
page.paginator.links.path | ID de page sans l'index de position. |
Exemple:
{% if page.paginator %}
<div>
{% if page.paginator.links.prev is defined %}
<a href="{{ url(page.paginator.links.prev) }}">Previous</a>
{% endif %}
{% if page.paginator.links.next is defined %}
<a href="{{ url(page.paginator.links.next) }}">Next</a>
{% endif %}
</div>
{% endif %} Exemple:
{% if page.paginator %}
<div>
{% for paginator_index in 1..page.paginator.count %}
{% if paginator_index != page.paginator.current %}
{% if paginator_index == 1 %}
<a href="{{ url(page.paginator.links.first) }}">{{ paginator_index }}</a>
{% else %}
<a href="{{ url(page.paginator.links.path ~ '/' ~ paginator_index) }}">{{ paginator_index }}</a>
{% endif %}
{% else %}
{{ paginator_index }}
{% endif %}
{% endfor %}
</div>
{% endif %} Taxonomie
Variables disponibles dans les templates vocabulary et term.
Vocabulaire
Page /<plural>/ (ex. : /categories/).
| Variables | Descriptif |
|---|---|
page.plural | Nom de vocabulaire au pluriel. |
page.singular | Nom de vocabulaire au singulier. |
page.terms | Liste de termes (Collection). |
Chaque terme de page.terms fournit term.id (identifiant du terme, ex. : categories/php), term.name (nom du terme, ex. : PHP) et le nombre de ses pages avec term|length.
Terme
Page /<plural>/<term>/ (ex. : /categories/php/).
| Variables | Descriptif |
|---|---|
page.title | Nom du terme. |
page.term | Identifiant du terme (ex. : categories/php). |
page.plural | Nom de vocabulaire au pluriel. |
page.singular | Nom de vocabulaire au singulier. |
page.pages | Liste des pages dans ce terme, triées par date (Collection). |
Exemple de taxonomie
Configuration :
taxonomies:
categories: category Front matter d’une page :
---
categories: ["Data Sovereignty"]
--- Liste des termes (/categories/), dans layouts/taxonomy/categories.html.twig :
{% extends 'page.html.twig' %}
{% block content %}
<h1>{{ page.title }}</h1>
<ul>
{% for term in page.terms %}
<li><a href="{{ url(term.id) }}">{{ term.name }}</a> ({{ term|length }})</li>
{% endfor %}
</ul>
{% endblock %} Liste des pages d’un terme (/categories/data-sovereignty/), dans layouts/taxonomy/category.html.twig :
{% extends 'page.html.twig' %}
{% block content %}
<h1>{{ page.title }}</h1>
{% for p in page.paginator.pages ?? page.pages %}
<article>
<h2><a href="{{ url(p) }}">{{ p.title }}</a></h2>
</article>
{% endfor %}
<a href="{{ url(page.plural) }}">Toutes les {{ page.plural }}</a>
{% endblock %} Liens vers les termes de la page courante, dans un template de page :
{% for category in page.categories ?? [] %}
<a href="{{ url('categories/' ~ category) }}">{{ category }}</a>
{% endfor %} cecil
| Variables | Descriptif |
|---|---|
cecil.url | URL du site Cecil. |
cecil.version | Version actuelle de Cecil. |
cecil.poweredby | Imprimez Cecil v%s, avec %s est la version actuelle. |