Installer des thèmes externes

Les thèmes externes sont des thèmes tiers packagés en fichiers . Vous uploadez le ZIP via le bouton Install theme de l'admin ; l'admin l'extrait côté client, upload les fichiers sur Flexweg, et

Les thèmes externes sont des thèmes tiers packagés en fichiers .zip. Vous uploadez le ZIP via le bouton Install theme de l'admin ; l'admin l'extrait côté client, upload les fichiers sur Flexweg, et enregistre le thème pour qu'il apparaisse aux côtés des intégrés.

Le même mécanisme propulse tous les thèmes — les thèmes intégrés (default / magazine / corporate / marketplace-core) sont techniquement compilés comme « bundles externes » par le pipeline de build de l'admin. Les thèmes tiers fonctionnent identiquement.

Prérequis

Vous avez besoin d'un fichier .zip contenant :

  • manifest.json — métadonnées d'installation (id, name, version, apiVersion, entry)
  • bundle.js — le bundle ESM avec les templates React du thème
  • theme.css — la CSS compilée pour le site public
  • Optionnellement : <id>-menu.js, <id>-posts.js, <id>-search.js, README.md, autres assets

Pour les guides côté auteur de thème :

Comment installer

Thèmes dans la sidebar → bouton Install theme → drag le ZIP dans la zone de drop.

L'admin :

  1. Extrait le ZIP en mémoire (JSZip)
  2. Lit manifest.json → valide id, version, apiVersion
  3. Si une version précédente du même id existe : pré-clean l'ancien dossier sur Flexweg
  4. Upload chaque fichier sous /admin/themes/<id>/ sur Flexweg
  5. Upload theme.css à /theme-assets/<id>.css sur Flexweg
  6. Met à jour le registry externe en base (settings/externalRegistry)
  7. Dynamic-import bundle.js → enregistre le default export
  8. Reload la page de l'admin

À la fin, le thème apparaît dans la liste des Thèmes. Pour l'utiliser, cliquez Activer sur sa carte.

Upgrade in-place

Si une version précédente du même id existe, l'admin fait un upgrade in-place :

  • Pré-clean le dossier /admin/themes/<id>/ sur Flexweg
  • Upload le nouveau bundle
  • Re-upload theme.css à /theme-assets/<id>.css (override la version précédente)
  • Replace l'entrée registry
  • Toast affiche v1.0.0 → v1.1.0

Le themeConfigs[<id>] est conservé entre versions. Vos overrides de palette / polices restent.

Si le thème upgradé est actuellement actif, vous voyez immédiatement les changements de templates dans l'admin (édition, preview). Le site public reflète les changements au prochain Regenerate site → All HTML pages.

Validation au moment de l'install

L'admin refuse l'install si :

  • id invalide — doit matcher ^[a-z0-9-]+$
  • apiVersion hors-range — doit être dans [FLEXWEG_API_MIN_VERSION, FLEXWEG_API_VERSION]
  • bundle.js manquant — le ZIP doit contenir le fichier d'entry
  • theme.css manquant — le ZIP doit contenir la CSS (sinon les pages publiques sans style)
  • Erreur d'upload Flexweg — quota dépassé, permissions insuffisantes, etc.

Si le dynamic-import crashe (Invalid hook call, default export n'est pas un ThemeManifest, etc.) :

  • Toast d'erreur
  • Loggue l'erreur en console
  • Garde l'entrée registry (donc le thème réapparaît au prochain boot et essaie de re-charger)

Pour récupérer : désinstallez l'ancienne version cassée, puis ré-uploadez la version corrigée.

Différence avec les plugins

Les thèmes externes ont deux fichiers à uploader sur Flexweg :

  • bundle.js à /admin/themes/<id>/bundle.js (pour l'admin SPA)
  • theme.css à /theme-assets/<id>.css (pour le site public — référencé par chaque page publiée)

Les plugins n'ont que bundle.js.

Si le thème ship aussi des fichiers JS runtime (<id>-menu.js, etc.), ils sont uploadés à /theme-assets/<id>-<name>.js.

Sécurité

Un thème externe peut faire tout ce qu'un thème intégré peut faire. Il a accès :

  • Au runtime de l'admin (peut potentiellement injecter de l'UI malveillante)
  • Au rendu HTML public (peut injecter du script tracker, par exemple)
  • À l'API Files (peut upload / supprimer des fichiers)

Donc n'installez QUE des thèmes provenant de sources fiables. Lisez le code source si vous avez un doute — la bundle.js est minifiée mais lisible avec un outil de prettify.

Stockage utilisé

Un thème externe consomme typiquement :

  • bundle.js : 50-500 Ko
  • theme.css : 20-100 Ko
  • *-menu.js, *-posts.js : ~3 Ko chacun

Total ~100-700 Ko par thème. Négligeable face au quota Flexweg.

Voir aussi