# Structure des dossiers
# Dossier templates
Nous utilisons le principe "Convention is better than configuration".
Chaque fichier de template se nomme index.twig. Nous créons un chemin de dossiers vers ce fichier selon son section type
à partir du dossier templates/_sections.
# Structure générale
TEMPLATES
├── _base
│ ├── critical (critical CSS qui sera ajouté inline dans le head)
│ └── hash (hash créés par Webpack vers les fichiers CSS et JS)
├── _macros
├── _navigation (votre navbar et menus)
├── _sections
│ ├── single
│ │ ├── home (exemple pour un single singleHome )
│ │ │ └── index.twig
│ │ └── news (exemple pour un single singleNews, la page d'archive )
│ │ └── index.twig
│ ├── channel
│ │ ├── events (exemple pour un channel channelEvents, la page de chaque entrée )
│ │ │ └── index.twig
│ │ └── news (exemple pour un channel channelNews, la page de chaque entrée )
│ │ └── index.twig
│ ├── structure (même principe pour vos structures)
│ ├── category (même principe pour vos catégories, si elles ont une page template)
├── _shared
│ └── pagination.twig (exemple)
├── 404.twig
├── sitemap.xlm.twig (sitemap, modifiez selon votre contenu)
├── human.txt
└── robot.txt
TIP
Le underscore devant les dossiers empêche d'accéder à ces dossiers à partir du web.
# Dossier _sections

# Multiple entry types

# Handle vs Dossiers
La structure des dossiers est créée selon une combinaison du nom du handle

# Multiple entry types

# Category Groups

# Dossiers SRC et config
SRC
├── ejs (templates utilisés par Webpack pour le hash des fichiers)
├── js (nos fichiers JS)
├── sass (nos fichiers SCSS)
└── svg (svg qui seront optimisés et ajoutés dans web/img/svg-sprite.svg)
└── temp-optimized (dossier temporaire avec les svg optimisés)
CONFIG
├── project (fichiers yaml de structure de l'admin, générés automatiquement)
├── redactor (customs configs pour l'éditeur Redactor)
└── general.php (fichier de config du projet)
# URI et slugs
Lors de la création d'une section, que ce soit une structure, un channel ou un single, il vous sera demandé pour chaque langue :
| Entry URI Format | Template |
|---|---|
| {slug} | _sections/ma-structure/index |
# Incluant un path
La balise {slug} dit d'utiliser le champ slug de l'entrée en question. Vous pouvez donc combiner, exemple :
nouvelles/{slug}
# Incluant de la logique Twig
Ce champ accepte de la logique Twig, par exemple, la création d'un slug basé sur la valeur d'un champ checkbox.
Cette façon dynamique peut s'avérer intéressante pour utiliser une valeur d'un champ categories pour créer le slug de l'entrée :
{exempleCatRelation.one().slug}/{slug}
TIP
Essayez toutefois de garder cela le plus simple et "hardcodé" possible, pour faciliter la maintenance future.
# Uri spéciaux
Si vous avez des besoins plus spécifiques, pour une page de résultat de recherche sans "entrée" ou autre, vous pouvez utiliser des routes custom:
Idéalement, utilisez le fichier routes.php dans config plutôt que le panneau d'administration.