Le système de thèmes de QuietCMS est intentionnellement simple : un thème est un répertoire PHP dans themes/<nom>/. Pas de compilation, pas de système de build, pas de moteur de templates propriétaire. Chaque développeur PHP peut créer ou modifier un thème en travaillant directement avec des fichiers .php et .css.
Structure minimale d'un thème
Un thème valide doit contenir au minimum les fichiers suivants :
themes/mon-theme/
├── theme.json # Métadonnées du thème
├── layout.php # Coquille HTML externe (head, header, footer)
├── home.php # Page d'accueil
├── blog.php # Liste des articles
├── post.php # Article individuel
├── page.php # Page statique
├── category.php # Liste par catégorie
├── 404.php # Page d'erreur
└── style.css # Feuille de styles principale
Le fichier theme.json
theme.json déclare les métadonnées et les capacités du thème :
{
"name": "Mon Thème",
"description": "Un thème minimaliste pour QuietCMS.",
"author": "Votre Nom",
"version": "1.0.0",
"supports": ["sidebars", "comments", "breadcrumbs"]
}
Le tableau supports indique au CMS quelles fonctionnalités le thème est capable d'afficher. Si sidebars est absent, le panneau d'administration masque la gestion des zones de widgets pour ce thème.
layout.php : la coquille commune
layout.php est le fichier inclus pour toutes les pages. Il contient le <!DOCTYPE html>, le <head> avec les métadonnées SEO et la balise d'inclusion du template spécifique ($template). C'est ici que s'injectent les balises Open Graph, les scripts analytics et les zones head_extra / footer_extra définies page par page.
Variables injectées par le CMS
À chaque rendu, le CMS injecte les variables suivantes dans le scope des templates :
$page— tableau contenant les données de la page/article en cours (titre, contenu, slug…)$settings— configuration globale du site (nom, description, réseaux sociaux…)$menu— tableau des éléments de menu principal$template— nom du fichier template à inclure (ex.post.php)$blogSlug— slug de la page blog (pour construire les liens)$catPrefix— préfixe des URLs de catégorie$tplOpts— options de template (disposition, sidebar, largeur…)$themeSettings— paramètres spécifiques au thème actif
Classes helper disponibles
Dans les templates, toutes les classes core/ sont disponibles :
Security::clean($str)— échappe une chaîne pour l'affichage HTML.BreadcrumbBuilder::render($page, $settings)— fil d'Ariane formaté.SidebarManager::render($sidebarId, $settings)— rendu d'une zone de widgets.OpenGraphBuilder::render($page, $settings)— balises OG pour le<head>.
Les constantes BASE_URL, THEMES_DIR et CORE_DIR sont également disponibles pour construire des chemins absolus vers les assets du thème.
Démarrer un nouveau thème
La méthode recommandée est de copier le thème default/ et d'y apporter ses modifications :
- Copier
themes/default/versthemes/mon-theme/. - Modifier
theme.json(nom, auteur, version). - Personnaliser
style.cssetlayout.php. - Activer le thème depuis Apparence → Thèmes dans le back-office.
Le changement de thème est instantané et sans perte de contenu : le CMS continue de lire les mêmes fichiers JSON, seule la couche de présentation change. L'éditeur CSS et l'éditeur de templates intégrés permettent d'affiner le thème directement depuis l'interface d'administration, sans accès FTP.
Articles similaires
Éditeur CSS et templates PHP en ligne
QuietCMS permet d'éditer le CSS et les templates PHP du thème actif directement depuis le back-office.
Typographie avancée — polices par niveau de titre (H1–H6)
Choisissez une police Google Fonts différente pour chaque niveau de titre H1 à H6. QuietCMS génère les variables CSS et…
Gestionnaire de sidebars et widgets
QuietCMS intègre un gestionnaire de sidebars avec des zones de widgets configurables par type de page.