Éditeur de contenu

Gestion des pages et articles

Pages statiques et articles de blog

QuietCMS distingue deux types de contenus principaux : les pages (contenu statique, hiérarchique) et les articles (blog, horodatés, catégorisés). Les deux sont stockés au format JSON sur le disque, sans aucune base de données. La classe ContentManager gère l'ensemble des opérations CRUD pour ces deux types avec verrouillage de fichier (LOCK_EX) pour éviter les écritures concurrentes.

Gestion des pages

Chaque page est enregistrée dans content/pages/<slug>.json. Les pages offrent les fonctionnalités suivantes :

  • Slug personnalisé — généré automatiquement depuis le titre (slugification ASCII), modifiable manuellement
  • Override du H1 — le titre affiché sur la page peut différer du titre SEO
  • Page parente — pour construire une hiérarchie (ex. /services/consulting/)
  • Image à la une — sélectionnable depuis la bibliothèque médias
  • Override robots metanoindex, nofollow, noarchive configurables par page
  • head_extra / footer_extra — champs libres pour injecter des scripts ou styles spécifiques à une page
  • JSON-LD personnalisé — bloc de données structurées supplémentaires

Gestion des articles de blog

Les articles résident dans content/posts/<slug>.json. En plus des fonctionnalités communes avec les pages, ils disposent de :

  • Catégorie — une catégorie principale par article (slug de catégorie)
  • Tags — liste libre de mots-clés (tableau JSON)
  • Date de publication — contrôlable manuellement, au format ISO 8601
  • Statutdraft, published ou scheduled
  • Image à la une — utilisée pour Open Graph, les listes et le JSON-LD Article

Système de statuts

Le cycle de vie d'un article suit trois états :

  • draft — brouillon invisible du public ; seul l'admin peut prévisualiser
  • published — en ligne immédiatement, indexable
  • scheduled — mis en ligne automatiquement à la date définie via une vérification lors de chaque requête (pas de cron nécessaire si le trafic est régulier)

Éditeur de contenu

Le back-office propose un éditeur HTML enrichi. Selon la version déployée, il s'agit d'une intégration TinyMCE ou d'une zone <textarea> avec coloration syntaxique. L'éditeur insère du HTML propre et sémantique. Les pièces jointes (images, vidéos) sont insérables via la bibliothèque médias intégrée.

Slug et unicité

Lors de la création d'un contenu, le slug est généré automatiquement depuis le titre :

// Exemple de slugification
"Mon Article : Démo !" → "mon-article-demo"

Si le slug existe déjà, un suffixe numérique est ajouté (-2, -3...). Le slug est ensuite immuable pour préserver les URLs existantes, sauf modification manuelle explicite (accompagnée d'une redirection automatique proposée par le CMS).

SEO par page

Chaque contenu dispose de ses propres champs SEO :

  • Titre SEO — balise <title> distincte du titre affiché
  • Meta description — 120-160 caractères recommandés
  • URL canonique — auto-générée, surchargeable
  • JSON-LD custom — pour ajouter des schémas spécifiques (Product, Event, Recipe…)

Page d'accueil et page blog

N'importe quelle page peut être désignée comme page d'accueil depuis Admin → Réglages → Général. Le slug de la page blog est également configurable (défaut : blog), ce qui donne l'URL publique /blog/ pour le listing des articles.

Articles similaires