Basculer de thème

Basculer le thème actif est une opération délibérée, all-or-nothing. Le HTML / CSS du nouveau thème remplace celui de l'ancien partout sur votre site en une fois. Pas d'override par page, pas de a/b

Basculer le thème actif est une opération délibérée, all-or-nothing. Le HTML / CSS du nouveau thème remplace celui de l'ancien partout sur votre site en une fois. Pas d'override par page, pas de a/b testing.

Cette page parcourt ce qu'il se passe quand vous basculez et comment récupérer si ça dérape.

Le flow de bascule

  1. Ouvrez Thèmes dans la sidebar.

  2. Cliquez le bouton Activer sur la carte d'un thème inactif.

  3. Une modale de confirmation explique que la bascule va :

    • Mettre à jour settings.activeThemeId en base
    • Uploader la CSS du nouveau thème à /theme-assets/<nouveau-id>.css
    • Re-uploader menu-loader.js, posts-loader.js (si présents)
    • Pas re-rendre les pages publiées (vous devez cliquer Regenerate après)
  4. Cliquez Confirmer.

  5. L'admin fait la bascule + le sync des assets en arrière-plan.

  6. Toast : « Cliquez sur Regenerate site → All HTML pages pour re-rendre chaque page avec le nouveau thème. »

Pourquoi pas auto-Regenerate

Parce que vous voulez probablement :

  • Configurer la palette / les polices du nouveau thème via ses réglages
  • Désactiver des plugins qui ne sont compatibles qu'avec l'ancien thème
  • Pré-créer des pages utilisant les blocs du nouveau thème

AVANT que les pages publiques basculent. Donc la bascule = changer le pointeur, mais le rendu attend.

Pendant la transition

Tant que vous n'avez pas cliqué Regenerate :

  • L'admin affiche le nouveau thème (édition, preview, etc.)
  • Le site public affiche encore l'ancien thème (les fichiers HTML uploadés sont toujours là)

C'est l'état « pré-render ». OK pour itérer sur les réglages sans pression.

Le Regenerate

Cliquez Regenerate site → All HTML pages dans le menu Thèmes. Le pipeline :

  1. Itère sur chaque post + page en ligne
  2. Pour chaque : re-rend le HTML avec le nouveau thème, re-upload sur Flexweg
  3. Cascade : re-rend la home + chaque archive de catégorie
  4. Re-publie /menu.json (au cas où le nouveau thème expose des items différents)

Pour 100 posts : ~30 s. Pour 1000 posts : ~5 min.

Pendant cette opération, les visiteurs du site public peuvent voir un mélange transitoire : pages déjà re-rendues = nouveau thème, pages pas encore touchées = ancien. Inévitable pour un site sans serveur applicatif.

Cas particulier : blocs de thème

Si vos posts utilisent des blocs spécifiques à l'ancien thème (ex. magazine/hero-split), ils :

  • Restent dans le markdown des posts (les marqueurs <div data-cms-block="magazine/hero-split"...> ne sont pas modifiés)
  • Ne sont plus rendus par le nouveau thème (le filtre post.html.body de l'ancien n'est plus actif)
  • Apparaissent comme <div> vides dans le HTML public

Solutions :

  1. Avant de basculer : éditer chaque post et remplacer par des blocs équivalents du nouveau thème
  2. Live : accepter les blocs orphelins (les <div> vides sont CSS-invisibles par défaut)
  3. Script de migration : si vous proposez un upgrade path, écrivez un script qui remplace les marqueurs

Cas particulier : variantes d'image

Chaque thème déclare les variantes d'image qu'il consomme. Si le nouveau thème demande des dimensions que l'ancien ne produisait pas :

  • Les médias anciens n'ont pas ces variantes → pickFormat retombe sur la plus grande disponible
  • Les médias futurs ont toutes les bonnes variantes

Donc rien ne casse, mais la qualité visuelle peut être suboptimale pour certains médias anciens.

Cas particulier : compileCss

Si l'ancien thème avait des overrides de palette / polices (via sa page de réglages), ces overrides sont stockés dans settings.themeConfigs.<ancien-id> et persistent. Quand vous re-basculez vers cet ancien thème plus tard, ses overrides sont restaurés.

Le nouveau thème démarre avec son defaultConfig jusqu'à ce que vous le configuriez.

Cas particulier : plugins gating sur le thème actif

Certains plugins changent leur comportement selon le thème actif (rare). Vérifiez les pages de réglages des plugins après la bascule.

Rollback

Si le nouveau thème ne convient pas, re-cliquez sur l'ancien dans la liste des Thèmes → Activer. La cascade fait l'inverse :

  • Sync de ses theme assets
  • Re-Regenerate pour repasser le HTML public à son rendu

Aucune perte de données — les configs des deux thèmes restent en base.

Plusieurs thèmes simultanés ? Non.

Le CMS n'a qu'un seul thème actif à la fois. Pour expérimenter sans toucher au site en prod, utilisez un site de staging.