Drag

Statamic : blueprints et fieldsets (cas concret page « Ressources »)

Statamic : blueprints et fieldsets (partie 4)

Écrit par : Thibault Chazottes

Statamic : blueprints et fieldsets en pratique

Dans la vidéo précédente, on a parcouru le tableau de bord : collections, navigations, taxonomies, assets, globales. Chaque type de contenu doit maintenant préciser quels champs il possède — c’est exactement le travail des blueprints.

Ici, on le fait sur un cas concret : une page « Ressources » sur un site de formation (posts LinkedIn listés plus tard côté code ; l’objectif de cette étape est surtout le modèle de contenu dans Statamic). Références : Blueprints et Fieldsets.


Le projet : une page « Ressources »

L’idée : une page avec

  • une section héros (titre, description courte, bouton optionnel, image) ;
  • une introduction plus riche (texte formaté) ;
  • une section liste d’articles (titre de bloc) — sans aller jusqu’à l’intégration API LinkedIn (sujet Laravel pour une autre vidéo).

On attache le blueprint à la collection pages, avec un handle du type ressources.


Créer le blueprint dans le Control Panel

  1. Blueprints → créer un blueprint lié à la collection Pages.
  2. Le nommer (ex. ressources).
  3. Statamic propose par défaut un champ title (souvent réutilisé pour le slug automatique).

Section héros

  • Renommer / organiser la zone en « Section héros » (groupe de champs ou section).
  • Titre du héros (texte).
  • Description courte : un champ Markdown suffit si vous n’avez pas besoin de mise en forme avancée dans le CP.
  • Instructions : utiles pour les clients (« texte affiché dans le héros », etc.).
  • Validation et conditions : possibles sur chaque champ (règles Laravel) — on les simplifie ici pour rester lisible.

Image

  • Champ Assets : une image, éventuellement obligatoire, choix du conteneur (voir la doc Assets).

Fieldset « bouton » : ne pas dupliquer les champs

Sur un site, le même motif revient souvent : afficher ou non un bouton, libellé, URL (externe ou entrée interne). Plutôt que de recréer ces trois champs sur chaque blueprint, on crée un fieldset (groupe de champs réutilisable).

Exemple de fieldset btn :

Champ Type Rôle
Afficher le bouton Toggle Active / désactive le bloc
Label du bouton Text Texte du bouton
URL du bouton Link URL libre ou entrée d’une collection (ex. cours)

Sur le type Link, Statamic permet de restreindre les cibles : URL en dur, pages, entrées d’une collection donnée, etc.

Conditions d’affichage

Configurez des conditions : le label et l’URL ne s’affichent dans le CP que lorsque « Afficher le bouton » est à true. Sans condition, les champs restent visibles mais vides — moins clair pour l’éditeur.

Enregistrez le fieldset, rechargez le blueprint (F5 dans le CP si besoin), puis importez le fieldset existant (« link existing ») dans la section héros.


Préfixe de handles : éviter les conflits

Chaque champ a un handle unique dans l’entrée (comme une colonne en base : pas deux colonnes du même nom sur la même « table »).

Si vous importez deux fois le même fieldset sur une page (deux boutons), les handles se marchent dessus. Statamic propose un préfixe à l’import : par ex. hero_hero_afficher_bouton, hero_label_bouton, hero_url_bouton.

Même logique pour deux champs « description » : un dans le héros, un dans l’intro → préfixer (hero_description, intro_description) ou renommer les handles. Le CP signale l’erreur si un handle est en double.


Section introduction : Markdown ou Bard

Deuxième bloc : texte plus long pour l’introduction.

  • Markdown : simple, peu visuel pour des rédacteurs non techniques.
  • Bard : éditeur WYSIWYG (titres, gras, listes…) — pratique pour du contenu riche. Voir Bard.

Nommez le handle de façon explicite (intro_description, etc.) pour rester cohérent avec le préfixe de section.


Onglet « Liste articles »

Pour les grosses pages, Statamic permet des onglets dans le formulaire d’édition : l’éditeur passe d’une section à l’autre au lieu de tout faire défiler.

Créez un onglet (ex. « Liste articles ») avec au minimum un champ titre pour intituler le bloc qui listera les posts (le listing viendra dans le template Antlers / la logique Laravel).


Créer une entrée et vérifier le formulaire

Collections → Pages → Nouvelle entrée : choisissez le blueprint Ressources.

Vous devez voir les groupes configurés (héros, intro, onglet liste), le fieldset bouton avec toggle + champs conditionnels, et l’asset image. Testez : activer le bouton → les champs label / URL apparaissent.

Exemple de contenu : titre « Mes ressources LinkedIn », bouton « Suivez-moi sur LinkedIn » avec URL externe ou lien vers une entrée cours si le champ Link le permet.

L’affichage public de la page n’est pas couvert ici : il faudra une vue Antlers (ou équivalent) qui lit ces variables — sujet de la vidéo suivante de la série.


Côté fichiers : où tout est stocké

Le blueprint génère un YAML, typiquement sous :

resources/blueprints/collections/pages/ressources.yaml

Vous y retrouvez la définition de tous les champs, imports de fieldsets et préfixes. Les fieldsets vivent dans resources/fieldsets/ (ex. btn.yaml).

Vous pouvez éditer ces YAML à la main ou via le CP ; les deux restent synchronisés. Certains équipes passent aussi par l’IA pour générer des blueprints à partir d’un brief — le format reste le même.

À retenir : blueprint = structure du type de contenu ; field = colonne ; handles uniques ; fieldsets = blocs répétés (bouton, SEO, encart, etc.).


Vidéo : blueprint et fieldsets pas à pas


Conclusion

Vous savez maintenant modéliser une page dans Statamic : sections, types de champs, fieldset bouton avec conditions, préfixes de handles, onglets pour le CP, et fichiers YAML dans resources/blueprints/ et resources/fieldsets/.

Suite de la série : Statamic : Antlers ou Blade pour afficher le contenu.