Sur cette page
Organisation et règles de recherche
Cecil génère les pages à l’aide de templates Twig : cette page explique comment les templates sont organisés et comment le bon template est choisi pour chaque page.
Organisation des fichiers
Types de templates
Il existe trois types de templates, layouts, components et autres templates : layouts sont utilisés pour afficher les pages, et chacun d'eux peut inclure des templates et components.
Convention de nommage
Les fichiers templates sont stockés dans le répertoire layouts/ et doivent être nommés selon la convention suivante :
layouts/(<section>/)<type>|<layout>.<format>(.<language>).twig
<section>(facultatif)- La section de la page (ex. :
blog). <type>- Le type de page :
home(ouindex) pour homepage,listpour list,pagepour page, etc. (Voir Règles de recherche pour plus de détails). <layout>(facultatif)- Le nom de la layout personnalisée défini dans le front-matter de la page (par exemple :
layout: my-layout). <format>- Le format de sortie de la page rendue (par exemple :
html,rss,json,xml, etc.). <language>(facultatif)- La langue de la page (ex. :
fr).
Exemples :
layouts/home.html.twig # `type` est "homepage"
layouts/page.html.twig # `type` est "page"
layouts/page.html.fr.twig # `type` est "page" et `language` est "fr"
layouts/my-layout.html.twig # `layout` est "my-layout"
layouts/blog/list.html.twig # `section` est "blog"
layouts/blog/list.rss.twig # `section` est "blog" et `format` est "rss"
<mon-site>
├─ ...
├─ layouts
| ├─ index.html.twig # Utilisé par le type "homepage"
| ├─ list.html.twig # Utilisé par les types "homepage" et "section"
| ├─ list.rss.twig # Utilisé par les types "homepage" et "section", pour le format de sortie RSS
| ├─ page.html.twig # Utilisé par le type "page"
| ├─ taxonomy
| | ├─ tags.html.twig # Utilisé par le type "vocabulary" de `tags` (liste des termes)
| | └─ tag.html.twig # Utilisé par le type "term" de `tags` (liste des pages)
| ├─ my-layout.html.twig # Utilisé par les pages avec `layout: my-layout` dans le front-matter
| ├─ ...
| └─ partials
| ├─ footer.html.twig # Template inclus
| └─ ...
└─ themes # Layouts et templates des thèmes
└─ ...
Templates intégrés
Cecil est livré avec un ensemble de templates intégrés.
Règles de recherche
Dans la plupart des cas vous n'avez pas besoin de préciser la layout : Cecil sélectionne la layout la plus appropriée, en fonction du type de la page.
Par exemple, la sortie HTML de home page (index.md) sera rendue :
- avec
my-layout.html.twigsi la variablelayoutest définie sur "my-layout" (dans le préambule) - sinon, avec
index.html.twigsi le fichier existe - sinon, avec
home.html.twigsi le fichier existe - sinon, avec
list.html.twigsi le fichier existe
Toutes les règles sont détaillées ci-dessous, pour chaque type de page, par ordre de priorité.
Type homepage
<layout>.<format>.twigindex.<format>.twighome.<format>.twiglist.<format>.twig_default/<layout>.<format>.twig_default/index.<format>.twig_default/home.<format>.twig_default/list.<format>.twig_default/page.<format>.twig
Type page
<section>/<layout>.<format>.twig<layout>.<format>.twig<section>/page.<format>.twig_default/<layout>.<format>.twigpage.<format>.twig_default/page.<format>.twig
Type section
<layout>.<format>.twig<section>/index.<format>.twig<section>/list.<format>.twigsection/<section>.<format>.twig<parent>/index.<format>.twig,<parent>/list.<format>.twigetsection/<parent>.<format>.twig, pour chaque section parente d’une sous-section (la plus proche en premier)_default/section.<format>.twiglist.<format>.twig_default/list.<format>.twig
Type vocabulary
taxonomy/<plural>.<format>.twigvocabulary.<format>.twig_default/vocabulary.<format>.twig
Type term
taxonomy/<plural>/<term>.<format>.twigtaxonomy/<singular>.<format>.twigterm.<format>.twig_default/term.<format>.twig_default/list.<format>.twig