Page builder

Qu’est-ce que le page builder ?

Le page builder de Fatplant est un éditeur visuel intégré à l’administration. Il permet de composer des mises en page complexes sans écrire de code HTML ou CSS, en assemblant des blocs structurés appelés modules.

Il est utilisé pour composer :

  • Le contenu principal d’un article (corps de l’article)
  • Les pages statiques (page d’accueil, À propos…)
  • Les layouts de thèmes

Structure hiérarchique

Le contenu d’une page est représenté par un document JSON organisé en quatre niveaux :

Page
└── Section (fond, espacement)
    └── Rangée / Row (disposition horizontale)
        └── Colonne / Column (largeur, responsive)
            └── Module (bloc de contenu)

Section

Une section est le niveau le plus haut. Elle définit l’arrière-plan (couleur, image), le padding vertical et la largeur maximale du contenu. On peut avoir plusieurs sections sur une même page pour créer des alternances visuelles.

Rangée (Row)

À l’intérieur d’une section, les rangées définissent la disposition horizontale des colonnes. Chaque rangée peut avoir un nombre variable de colonnes.

Colonne (Column)

Les colonnes se répartissent horizontalement dans une rangée. Leur largeur est définie en fractions (ex : 1/2, 1/3, 2/3). Sur mobile, les colonnes se replient automatiquement en pleine largeur.

Module

Un module est le bloc de contenu terminal. Il peut afficher du texte, une image, un bouton, un lecteur vidéo, etc. Chaque module a son propre schéma de propriétés.

Catalogue de modules

ModuleDescription
textContenu riche (WYSIWYG/Markdown)
imageImage avec variantes responsive
videoLecteur vidéo (URL ou embed)
quoteCitation mise en forme
separatorLigne de séparation
ctaBouton d’appel à l’action
cardCarte avec image, titre, lien
gridGrille d’éléments répétés
raw-htmlHTML brut (réservé aux développeurs)

Les plugins peuvent enregistrer de nouveaux modules via le système de hooks.

Le document de layout (JSON)

Le contenu d’une page est sérialisé en JSON et stocké dans le champ content de l’entité. Voici un exemple simplifié :

{
  "sections": [
    {
      "id": "sec-1",
      "background": "#ffffff",
      "rows": [
        {
          "id": "row-1",
          "columns": [
            {
              "id": "col-1",
              "width": "1/2",
              "modules": [
                {
                  "id": "mod-1",
                  "type": "text",
                  "props": {
                    "content": "<p>Bienvenue sur notre site.</p>"
                  }
                }
              ]
            },
            {
              "id": "col-2",
              "width": "1/2",
              "modules": [
                {
                  "id": "mod-2",
                  "type": "image",
                  "props": {
                    "mediaId": 42,
                    "alt": "Photo d'illustration"
                  }
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

Responsive et états

Le page builder gère nativement les points de rupture responsive. Pour chaque colonne, vous pouvez définir :

  • La largeur sur desktop (width)
  • La largeur sur tablette (widthMd)
  • La largeur sur mobile (widthSm, par défaut 1/1)

Les modules image utilisent automatiquement les variantes générées par la médiathèque (voir Médias).

Collaboration en temps réel

Le page builder est intégré au système de collaboration Yjs. Plusieurs éditeurs peuvent travailler simultanément sur le même document. Les modifications de chacun sont synchronisées en temps réel sans conflit grâce à l’algorithme CRDT.

La présence des collaborateurs est visible dans l’interface : un indicateur de couleur montre qui est en train d’éditer quel module.

Rendu côté serveur

Le frontend SSR de Fatplant interprète le document JSON pour rendre le HTML final. Chaque type de module a un composant Svelte dédié dans le thème actif. Cela permet une personnalisation complète du rendu sans modifier le core.

// Exemple de rendu d'un module dans le frontend SSR
switch (module.type) {
  case 'text':
    return TextModule;
  case 'image':
    return ImageModule;
  default:
    return UnknownModule;
}

Restez a la pointe de l'edition

Recevez les dernieres nouveautes, tutoriels et bonnes pratiques dans votre boite mail.

F
Fatplant

Le CMS open-source des redactions de presse en ligne. Du chemin de fer a la publication et au paywall : journaux, magazines et plateformes editoriales, self-hosted et sans vendor lock-in.

Open Source RGPD MIT License
Pourquoi « Fatplant » ?

« Fatplant », c'est « Flat Plan » qui a un peu bougé. Le flat plan — le chemin de fer en jargon de presse — c'est le plan page à page d'un journal avant impression : le squelette de l'édition, la pré-maquette en fil de fer. C'est exactement ce que dessine notre page builder. Un CMS qui part du chemin de fer ne pouvait pas s'appeler autrement. 🌱

© 2026 Fatplant SAS. Tous droits reserves.