L'un des avantages opérationnels de l'architecture flat-file est que les thèmes sont de simples fichiers sur le disque. QuietCMS en tire parti en proposant deux éditeurs intégrés dans le back-office : un éditeur CSS et un éditeur de templates PHP, accessibles sans accès FTP ni déploiement.
Éditeur CSS
L'éditeur CSS cible directement le fichier style.css du thème actif. Lorsque l'administrateur valide ses modifications, le fichier est écrasé via file_put_contents() protégé par LOCK_EX. Les changements sont visibles immédiatement sur le site public — il n'y a ni cache à purger, ni compilation à relancer.
L'interface utilise un <textarea> en police monospace avec numéros de ligne simulés par CSS. L'absence de librairie JavaScript externe (pas de CodeMirror, pas de Monaco) maintient le temps de chargement du back-office sous 200 ms même sur une connexion lente.
Éditeur de templates PHP
L'éditeur de templates liste tous les fichiers .php du thème actif dans un sélecteur déroulant. L'administrateur peut charger et modifier layout.php, post.php, home.php et tous les autres fichiers du thème. La sauvegarde suit le même mécanisme que l'éditeur CSS.
Sécurité : CSRF et authentification
Les deux éditeurs sont protégés par :
- Authentification admin — seuls les comptes admin actifs peuvent accéder aux pages d'édition.
- Token CSRF — chaque formulaire de sauvegarde inclut un token CSRF vérifié avec
hash_equals(). - Validation du chemin — le nom du fichier template soumis est validé contre la liste des fichiers autorisés, empêchant la traversée de répertoire (path traversal).
La constante DISABLE_TEMPLATE_EDIT
L'éditeur PHP offre à tout administrateur une capacité d'exécution de code arbitraire sur le serveur (Remote Code Execution). C'est une fonctionnalité intentionnelle pour les environnements de développement, mais elle doit être verrouillée en production dès lors que plusieurs administrateurs ont accès au back-office, ou que l'hébergeur l'exige.
Pour désactiver complètement l'éditeur de templates, une seule ligne dans config.php suffit :
define('DISABLE_TEMPLATE_EDIT', true);
Lorsque cette constante est définie à true, les routes d'accès à l'éditeur retournent une erreur 403 et l'entrée de menu disparaît de l'interface. L'éditeur CSS reste disponible — modifier du CSS ne constitue pas un risque d'exécution de code.
Quand activer ou désactiver
| Contexte | Éditeur CSS | Éditeur PHP |
|---|---|---|
| Développement local, admin unique | Activé | Activé |
| Production, admin unique de confiance | Activé | Selon politique |
| Production, multi-admins | Activé | Désactivé |
| Hébergement mutualisé restrictif | Activé | Désactivé |
Bonnes pratiques avant d'éditer
- Sauvegarder le fichier original via FTP ou Git avant toute modification.
- Tester sur un environnement de staging avant de modifier
layout.phpen production. - En cas d'erreur PHP introduite dans un template, le site public peut retourner une erreur 500. Avoir un accès FTP de secours est indispensable.
- Les deux éditeurs écrivent avec
file_put_contents()— il n'existe pas de versionnement automatique des fichiers modifiés. Versionner le dossierthemes/avec Git résout ce problème.
Articles similaires
Le système de thèmes PHP de QuietCMS
Comment créer un thème PHP pour QuietCMS : structure des fichiers, variables disponibles et template.json.
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.