Blocs
Un block est un fragment réutilisable de contenu structuré que vous incorporez dans n'importe quelle page ou post avec un seul shortcode : {{block:name}}. Lors de la construction du site, chaque shortcode est remplacé par le HTML rendu du block ; modifiez le block une fois, et chaque page qui l'incorpore change.
Comment fonctionne l'incorporation
Dans l'éditeur de corps de n'importe quelle page ou post, tapez :
{{block:my-block-name}} - Le nom doit correspondre au nom Internal Name d'un block publié, dans la même langue que la page.
- Un block non publié est silencieusement ignoré : le placeholder est retiré de la sortie plutôt que rendu.
- Le même block peut être incorporé plusieurs fois dans un même corps : chaque emplacement le rend à l'identique.
- Pour savoir où un block est utilisé, ouvrez-le dans l'admin et consultez sa vue d'utilisation, qui liste chaque page et post dont le corps le mentionne.
Types de blocks simples
Ces types ne nécessitent pas de JSON, juste des champs plats :
| Type | Idéal pour | Champs clés |
|---|---|---|
| cta | Section d'appel à l'action | heading, subheading, libellé du bouton, URL du bouton |
| image | Image autonome avec légende | URL de l'image, texte alternatif, légende |
| quote | Citation en exergue | texte de la citation, attribution, libellé |
| hero | Bannière pleine largeur | heading, subheading, libellé du bouton, URL du bouton, image |
| testimonial | Témoignage client | texte de la citation, attribution, avatar, libellé |
| stat | Statistique unique de grande taille | heading (le chiffre), subheading (le libellé) |
| promo | Image + texte en deux colonnes | image, heading, texte du corps, bouton |
| embed | Iframe / embed tiers | corps HTML brut, légende |
| video | Vidéo incorporée avec poster | URL d'embed, heading, légende, image poster |
| form | Formulaire de contact | heading, subheading, libellé d'envoi, URL d'action |
| newsletter | Bande d'inscription par email | heading, subheading, libellé du bouton |
| audio | Lecteur audio incorporé | heading, URL du fichier audio |
| callout | Encadré de note / avertissement / astuce | heading, texte du corps, variante (info, warning, success, note) |
| code_block | Exemple de code avec coloration syntaxique | langage, libellé facultatif, texte du code |
| divider | Ligne horizontale entre les sections | aucun : style uniquement |
| heading | Titre de section autonome | texte du titre, niveau (h1 à h6), subheading facultatif |
| spacer | Espace vertical entre les blocks | aucun : la hauteur se règle via les contrôles d'apparence padding/marge |
| text | Section de texte enrichi libre | heading, texte du corps |
Types de blocks structurés
Ils répètent des lignes de données stockées en JSON ; le formulaire d'admin de chaque type inclut un éditeur de lignes qui écrit le JSON pour vous :
| Type | Idéal pour | Forme des données |
|---|---|---|
| accordion | FAQ / sections pliables | rangées répétées de title + body, rendues nativement (pas de JavaScript) |
| table | Table de données | une ligne d'en-tête plus des rangées de valeurs de cellules |
| columns | Grille de fonctionnalités en 2, 3 ou 4 colonnes | rangées répétées de heading, body, image facultative |
| gallery | Grille d'images | rangées répétées d'URL d'image, de texte alternatif, de légende facultative |
| button_group | Rangée de boutons d'appel à l'action | rangées répétées de libellé du bouton, URL, style facultatif ; variante de style du groupe |
| citations | Liste de sources / références | rangées répétées de texte de citation, URL facultative, id d'ancre |
| faq | Section FAQ avec balisage SEO | rangées répétées de question + réponse ; génère automatiquement les données Schema.org FAQPage |
| feature_grid | Liste de fonctionnalités avec icônes | rangées répétées d'icône (image ou glyphe), heading, body |
| grid | Grille de mise en page en HTML personnalisé libre | cellules HTML brut répétées ; nombre de colonnes et espacement |
| logo_bar | Bande de logos de partenaires / clients | rangées répétées d'image de logo, texte alternatif, URL de lien facultative |
| page_list | Liste auto-liée des pages enfants d'une page | une référence à une page parente : les cartes (titre, URL, description) sont générées à partir des données de page en direct lors de la construction, sans rangées manuelles |
| pricing_table | Comparaison de plans / tarifs | rangées répétées de niveaux : nom, prix, période, liste de fonctionnalités, bouton facultatif, indicateur « featured » facultatif |
| team | Liste d'équipe / personnel | rangées répétées de photo, nom, rôle, bio, liens facultatifs |
| timeline | Historique chronologique ou feuille de route | rangées répétées de date, title, body |
| schedule | Horaire hebdomadaire récurrent (heures, horaires de service) plus exceptions datées | rangées hebdomadaires répétées jour/heure/libellé, plus rangées d'exceptions datées répétées ; génère automatiquement les données Schema.org Event pour les exceptions à venir |
Conventions de sécurité du texte : le HTML enrichi est accepté dans un ensemble précis de champs de corps : les corps de rangées d'accordion et de columns, les corps d'embed, le texte du corps de callout, les réponses de faq, les corps d'éléments de feature_grid, les cellules de grid, le texte du corps des blocks text et les corps d'événements de timeline. Tous les autres champs (titres, headings, URL d'images, légendes, libellés de boutons) sont échappés automatiquement.
Options d'apparence pour chaque block
Chaque block dispose de contrôles de style partagés appliqués comme styles en ligne sur son conteneur :
- Couleur d'arrière-plan: une valeur hex, rgb ou hsl. Vous pouvez aussi y mettre un nom de classe utilitaire au lieu d'une couleur : cette chaîne est attachée comme classe CSS au conteneur à la place d'un style de fond.
- Bordure: activer, définir une largeur, et remplacer la couleur de bordure.
- Couleur du texte: appliquée aux éléments heading et body pour les types qui le prennent en charge.
- Padding et marge: abréviation de style CSS autour de tout le block.
Travailler avec les blocks dans l'admin
Les blocks sont gérés depuis l'écran Blocks, une liste paginée groupée par type, avec pour chaque entrée son nom, sa langue, son statut de publication et sa date de dernière modification.
- Les nouveaux blocks démarrent vides ; les erreurs lors de l'enregistrement sont affichées toutes d'un coup.
- Blocks d'exemple : la page de liste peut construire un ensemble de départ (hero, CTA, promo, stat, quote et testimonial) pré-stylés et en anglais ; les blocks existants portant les mêmes noms sont laissés intacts.
- Corbeille : supprimer un block l'envoie à la corbeille avec un lien d'annulation, donc les erreurs sont récupérables.
- Le rapport d'utilisation montre où un block est référencé.
- Les actions groupées opèrent sur jusqu'à 500 blocks sélectionnés : publier, dépublier, déplacer à la corbeille, dupliquer comme brouillons, changer le type du block (uniquement vers des types actuellement enregistrés), et d'autres. Toute modification déclenche globalement une construction du site.
- Import : les blocks (et snippets) peuvent être importés via JSON ou CSV.
Lorsque vous modifiez un block, ses conteneurs de shortcodes sont reconstruits automatiquement afin que le site en ligne reflète la mise à jour.
Étendre : ajouter un nouveau type de block
Les nouveaux types de blocks sont une entrée de registre plus deux fichiers : enregistrez le slug du type sur l'écran Block Types (cette table est l'unique autorité sur les types valides), puis ajoutez un template builder et un formulaire d'admin pour le type. En écrivant le template builder, échappez les champs contrôlés par l'utilisateur comme d'habitude ; les seuls champs en HTML brut attendus sont les corps d'embed et les rangées body dans le contenu accordion/columns.
Stacks : séquences de blocks réutilisables
Pour les sections plus grandes qui se répètent d'une page à l'autre, les stacks permettent d'exporter/importer, dupliquer, voir où chacun est utilisé, et comparer des révisions, le tout depuis la section Stacks à côté de Blocks.
Également dans Blocs
Le block grid dispose des cellules libres dans une grille CSS : ses champs de colonnes, d'espacement et de nombre de cellules, et le rendu du HTML.
Utilisez le block feature_grid pour des fonctionnalités répétées avec icône, titre et corps facultatifs, avec ses champs et règles de sécurité HTML.
Utilisez le bloc pricing_table pour comparer des offres : titre et champs par formule (nom, prix, période, fonctionnalités, bouton, mise en avant).
Ajoutez un bloc team : une grille de personnes avec photo, nom, rôle, courte bio et liens optionnels, avec ses champs et l'ajout des membres.
Le block timeline : une liste ordonnée d'événements datés avec date, titre et texte, ses champs et le traitement du HTML.
Utilisez le block faq pour afficher des paires question-réponse avec données structurées FAQPage automatiques : champs, réponses en HTML, apparence.
Ajoutez une liste numérotée de sources en fin d'article avec le block citations : son titre, l'URL et le texte de chaque citation, et les ID d'ancre.
Le block form intègre un formulaire dans une page ou un post : son lien avec un Form via form_id, ses champs de titre et de bouton, et sa soumission.
Utilisez le block page_list pour lister les pages filles publiées d'une page parente en cards synchronisées au build, avec champs et règles HTML.
Utilisez le bloc embed pour intégrer du code tiers (iframe, carte, vidéo) dans une page, avec ses champs et l'avertissement HTML non échappé.
Ajoutez un bloc table : un tableau HTML simple avec en-têtes et lignes, ses champs, et quand l'utiliser plutôt que le bloc de tarifs.
Le block schedule : horaire hebdomadaire récurrent plus exceptions datées, avec données Schema.org Event automatiques.