CHAPITRE 18 — Annoter un template avec des slots
🏷️ Chapitre 18 — Annoter un template avec des slots
Le slot est l'unité de base d'InfraSStudio.du module. Ce chapitre vous montre comment transformer un HTML statique en HTML annoté,annoté, prêt à être édité par le client. C'estIl s'agit de l'opération la plus fréquente dans votre travail d'intégrateur.
🎯 Le principe en 2deux lignes
phrases
- Vous écrivez votre HTML normalement, comme vous le feriez sans le module.
LàAuxoùendroits que vous voulez rendredu contenu éditable,éditables, vous remplacez le contenu en dur par un token{{slot:...}}.
C'est tout. Le module faitse lecharge du reste (scanner,: détection automatique, persistance, rendu, édition).interface d'édition.
📝 Premier exemple complet
Avant — page hardcodée
non éditable
<section class="hero">
<h1>Bienvenue chez Keatic</h1>
<p>Votre partenaire numérique de confiance depuis 2010.</p>
<a href="/contact" class="btn">Nous contacter</a>
</section>
Après — page éditable via le Studio
<section class="hero">
<h1>{{slot:hero_title|type=text|default=Bienvenue chez Keatic|label=Titre du hero|group=hero}}</h1>
<p>{{slot:hero_lead|type=textarea|default=Votre partenaire numérique de confiance depuis 2010.|label=Accroche|group=hero}}</p>
<a href="{{slot:hero_cta_url|type=url|default=/contact|label=URL du bouton|group=hero}}" class="btn">
{{slot:hero_cta_label|type=text|default=Nous contacter|label=Libellé du bouton|group=hero}}
</a>
</section>
✅Résultat Résultat— — Le client voit dans le Studio un panneau « Hero » aveccomportant 4quatre champs (titre, accroche, URL du bouton, libellé du bouton). Aucun HTML à éditermodifier pourde lui.son côté.
📐 Anatomie d'un token de slot
{{slot:<identifiant>|type=<type>|attribut1=valeur1|attribut2=valeur2}}
Élément | Obligatoire | Description |
|---|---|---|
|
| Préfixe fixe qui déclare un slot. |
Identifiant |
| Unique par page. Caractères acceptés : minuscules, chiffres, |
|
| text, textarea, richtext, image, url, number, select, bool, icon, color. |
| Recommandé | Valeur de |
| Recommandé | Libellé affiché à l'éditeur dans le Studio. |
|
|
|
|
| Aide affichée sous le champ. |
|
| Limite de caractères pour |
| Si type=select | Liste CSV des valeurs possibles. |
💡Conseil — La grammaire complète est détaillée au Chapitre 19.
📍 Où placer un slot ?
Un slot peut être placé presqueà n'importede oùnombreux endroits dans votre HTML.
Dans le contenu d'une balise (cas le plus fréquent)
<h1>{{slot:title|type=text|default=Bienvenue}}</h1>
Dans un attribut HTML
<img src="{{slot:hero_image|type=image|default=/medias/hero.jpg}}" alt="...">
<a href="{{slot:cta_url|type=url|default=/contact}}">...</a>
<section style="background-color:{{slot:bg_color|type=color|default=#19052d}}">
Dans une chaîne de classes CSS
<i class="fa-solid {{slot:hero_icon|type=text|default=fa-rocket}}"></i>
⚠️ À ne PASpas faire — — Ne placez pas un slot dans un commentaire HTML, dans un bloc <script>, ou dans du JSON inline.intégré. Le scanner détecte tous les tokens et peut générer des slots fantômes.
🏷️ Convention de nommage des identifiants
L'identifiant est libre, mais une convention claire facilite la maintenance.
PatternSchéma recommandé
<section>_<champ> ou <page>_<section>_<champ>
Bon |
|
|---|---|
|
(trop générique, |
|
(incompréhensible) |
|
(les majuscules sont rejetées par le scanner) |
✅Recommandé Bonne pratique— — Si votre site acomporte 5cinq sections (hero, features, stats, testimonials, footer), préfixez tous vos slots par leur section. Le client retrouveretrouvera ainsi plus viterapidement ce qu'il cherche dans le Studio.
📂 Utiliser le groupe pour structurer l'UI
interface
L'attribut group détermine sous quelle section le slot apparaît dans le panneau « Contenu de la page » du Studio.
{{slot:hero_title|type=text|group=hero|...}}
{{slot:hero_lead|type=textarea|group=hero|...}}
{{slot:hero_image|type=image|group=hero|...}}
{{slot:features_card_1_title|type=text|group=features|...}}
{{slot:features_card_2_title|type=text|group=features|...}}
{{slot:features_card_3_title|type=text|group=features|...}}
{{slot:footer_copyright|type=text|group=footer|...}}
Dans le Studio, ces slots seront groupésregroupés visuellement sous trois sections : Hero,Hero, Features, Footer.et Footer.
🔄 Le rescan après ajout
Ajouter un slot dans un fichier tpl.php ne suffit pas : le module doit le découvrirdétecter et l'enregistrer en base. Pour ça,cela, lancez un rescan.rescan.
Méthode A — Via l'UIinterface Studio
- Outils → InfraSStudio → Contenu des pages.
- Sélectionnez votre site.
- Cliquez sur
«Rescanner»en haut. - Le module parcourt tous les fichiers
tpl.phpet synchronise les slots.
Méthode B — ViaEn CLI
ligne de commande
php htdocs/custom/infrasstudio/scripts/rescan_slots.php <ref-du-site> --entity=<N>
Sortie typique :
Rescanning website #1 — monsite (entity 2)
Pages scanned : 22
Slots added : 3
Slots updated : 40
Slots orphaned : 0
💡 Mode lintde validation — —Ajoutez Ajoutezl'option --lint pour détecter les erreurs de syntaxe slot avant de les commettrevalider :php rescan_slots.php <ref> --lintExitLe code :de sortie est 0 =en clean,l'absence d'erreur, 1 =en warnings,présence d'avertissements, 2 = errors. Utilisable en pre-commitcas hook.d'erreurs. Cette commande peut être intégrée dans un crochet de pré-commit.
🪦 Slots orphelins
QuandLorsque vous supprimez un slot d'un fichier tpl.php, son entréeenregistrement en base passe enau statut orphan« orphelin ». Le module lale conserve pendant 30 jours avant de lale purgersupprimer automatiquement (via cron)une tâche planifiée).
AvantageCette politique présente un avantage : si vous restaurez le slot dans le HTML,HTML pendant cette période, sa valeur précédente est récupérée.
ℹ️Note Forcer— Pour forcer la purge immédiate —des slots orphelins :php rescan_slots.php <ref> --purge-orphans
Liste 📋de Checklistcontrôle d'annotation
✅ Avant de livrer une page annotée :
- Chaque slot
apossède untypeexplicite. - Chaque slot
apossède une valeurdefault,(pourgarantissantquela lisibilité de la pagereste lisiblesi la base venait à sevide).vider. - Chaque slot
apossède unlabelen françaisclairclair,(vudestinéparà l'éditeur).éditeur. - Les slots sont
groupésregroupés par section avecgroup. - Les identifiants suivent la convention
<section>_<champ>. - Le rescan a été lancé sans
warningavertissement ni erreur. - Vous avez ouvert la page dans le Studio et
constatévérifiéquela présence de tous lesslots sont là.slots.
AuLe prochainchapitre chapitre,suivant on plonge dansdétaille la grammaire complète des slotsslots, avec tous les types et leurs comportements.