Thèmes & Design

Éditeur CSS et templates en ligne

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 uniqueActivéActivé
Production, admin unique de confianceActivéSelon politique
Production, multi-adminsActivéDésactivé
Hébergement mutualisé restrictifActivé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.php en 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 dossier themes/ avec Git résout ce problème.

Articles similaires