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 : les layouts, les composants et les autres templates. Les layouts sont utilisés pour générer les pages, et chacun d’eux peut inclure des templates et des composants.
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 template :
home(ouindex) pour la homepage,listpour les pages de liste (homepage et sections),pagepour une page, etc. (voir Règles de recherche pour plus de détails). <layout>(facultatif)- Le nom du layout personnalisé défini dans le front matter de la page (ex. :
layout: my-layout). <format>- Le format de sortie de la page générée (ex. :
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 # Templates inclus
| ├─ footer.html.twig
| └─ ...
└─ 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 le layout : Cecil sélectionne le layout le plus approprié, en fonction du type de la page.
Par exemple, la sortie HTML de la page d’accueil (index.md) sera générée :
- avec
my-layout.html.twigsi la variablelayoutest définie à « my-layout » (dans le front matter) - 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