Comment ce template modelise le contenu
Sept collections, une seule source de verite, et aucune chaine ecrite en dur dans le code. Voici le raisonnement derriere le modele et comment l'etendre.
La regle est simple : si un visiteur peut le lire, un editeur peut le changer sans redeployer. Cela vaut pour le blog, pour les pages legales, et pour chaque libelle de bouton.
Les sept collections
| Collection | Role |
|---|---|
languages | Locales activees et locale par defaut |
global_settings | Marque, SEO par defaut, societe et coordonnees |
ui_strings | Tous les libelles d'interface, traduits |
legal_pages | Documents legaux en Markdown |
categories | Rubriques du blog et leur gabarit editorial |
authors | Signatures |
articles | Articles du blog en Markdown |
Pourquoi les traductions vivent dans une table fille
Les traductions natives de Directus stockent une ligne par locale dans une table compagnon. Un article est donc une entite unique avec une ligne par langue, ce qui donne :
- Un slug par locale, pour des URL naturelles dans chaque langue.
- Une seule relation vers la rubrique, partagee par toutes les traductions.
- Une traduction manquante devient un trou visible, pas un repli silencieux vers la mauvaise langue.
Ce qui reste non traduit
Les cles stables, les relations, les dates et les images restent sur la ligne parente. Seul le texte redactionnel part dans la traduction.
Une cle est un contrat avec le code. Un libelle est un contrat avec le lecteur. Ne jamais melanger les deux dans un meme champ.
Etendre le modele
Ajoute le champ dans le fichier JSON de cms/schema/, puis relance le provisionnement :
npm run setup:directus
Le script ne cree que ce qui manque : tu peux le relancer aussi souvent que tu veux.
Questions frequentes
Peut-on supprimer une collection ? Oui, mais retire-la d'abord de cms/schema/index.json, sinon la prochaine execution la recreera.
Peut-on partir d'une autre langue que l'anglais ? Oui. Definis CMS_DEFAULT_LOCALE et CMS_LOCALES avant la premiere execution.