Aller au contenu
One More

Retour au journal

Science & méthode

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.

Par Jane Doe6 min de lecture

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

CollectionRole
languagesLocales activees et locale par defaut
global_settingsMarque, SEO par defaut, societe et coordonnees
ui_stringsTous les libelles d'interface, traduits
legal_pagesDocuments legaux en Markdown
categoriesRubriques du blog et leur gabarit editorial
authorsSignatures
articlesArticles 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 :

  1. Un slug par locale, pour des URL naturelles dans chaque langue.
  2. Une seule relation vers la rubrique, partagee par toutes les traductions.
  3. 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.