Logo de Cecil Cecil
Sur cette page

Organisation et règles de recherche

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 (ou index) pour homepage, list pour list, page pour 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 :

  1. avec my-layout.html.twig si la variable layout est définie sur "my-layout" (dans le préambule)
  2. sinon, avec index.html.twig si le fichier existe
  3. sinon, avec home.html.twig si le fichier existe
  4. sinon, avec list.html.twig si le fichier existe

Toutes les règles sont détaillées ci-dessous, pour chaque type de page, par ordre de priorité.

Type homepage

  1. <layout>.<format>.twig
  2. index.<format>.twig
  3. home.<format>.twig
  4. list.<format>.twig
  5. _default/<layout>.<format>.twig
  6. _default/index.<format>.twig
  7. _default/home.<format>.twig
  8. _default/list.<format>.twig
  9. _default/page.<format>.twig

Type page

  1. <section>/<layout>.<format>.twig
  2. <layout>.<format>.twig
  3. <section>/page.<format>.twig
  4. _default/<layout>.<format>.twig
  5. page.<format>.twig
  6. _default/page.<format>.twig

Type section

  1. <layout>.<format>.twig
  2. <section>/index.<format>.twig
  3. <section>/list.<format>.twig
  4. section/<section>.<format>.twig
  5. <parent>/index.<format>.twig, <parent>/list.<format>.twig et section/<parent>.<format>.twig, pour chaque section parente d’une sous-section (la plus proche en premier)
  6. _default/section.<format>.twig
  7. list.<format>.twig
  8. _default/list.<format>.twig

Type vocabulary

  1. taxonomy/<plural>.<format>.twig
  2. vocabulary.<format>.twig
  3. _default/vocabulary.<format>.twig

Type term

  1. taxonomy/<plural>/<term>.<format>.twig
  2. taxonomy/<singular>.<format>.twig
  3. term.<format>.twig
  4. _default/term.<format>.twig
  5. _default/list.<format>.twig