Sections dynamiques
Les sections dynamiques vous permettent de créer plusieurs instances d'une même section avec une configuration similaire, ce qui est particulièrement utile pour des éléments répétitifs comme les réseaux sociaux, les images d'un carrousel, une liste de partenaires, etc.
Utilisation de base
Pour créer des sections dynamiques, utilisez la clé iteration dans la configuration de votre section :
reseau_social: title: "Réseaux sociaux" sections: reseau: title: "Réseau social {i}" iteration: 3 fields: icone: label: "Icône" type: "remixicon" url: label: "URL" type: "url"
Titres dynamiques
Vous pouvez personnaliser le titre de chaque section dynamique de deux manières :
1. Utilisation de {i}
Le marqueur {i} sera remplacé par le numéro de l'itération (1, 2, 3, etc.).
2. Utilisation de dynamic_title
Pour un titre plus personnalisé, utilisez dynamic_title qui fera référence à un champ de la section :
reseau_social: title: "Réseaux sociaux" sections: reseau: title: "Réseau social {i}" iteration: 3 dynamic_title: nom_reseau # Utilisera la valeur du champ 'nom_reseau' comme titre fields: nom_reseau: label: "Nom du réseau" type: "text" icone: label: "Icône" type: "remixicon" url: label: "URL" type: "url"
Exemple complet
Voici un exemple complet avec plusieurs champs et une configuration avancée :
reseau_social: title: "Réseaux sociaux" description: "Configurez les liens vers vos réseaux sociaux" sections: reseau: title: "Réseau social {i}" # Titre par défaut avec numéro iteration: 5 # Crée 5 sections dynamic_title: "nom" # Utilise le champ 'nom' comme titre description: "Ajoutez jusqu'à 5 réseaux sociaux" fields: actif: label: "Activer ce réseau" type: "toggle" default: true nom: label: "Nom du réseau" type: "text" description: "Ex: Facebook, Twitter, etc." icone: label: "Icône" type: "remixicon" default: "ri-global-line" url: label: "URL complète" type: "url" placeholder: "https://exemple.com" couleur: label: "Couleur d'accent" type: "color_contrast" default: "#3b5998" # Bleu Facebook par défaut
Récupération des valeurs
Les valeurs des sections dynamiques sont stockées sous forme de tableau dans la base de données. Vous pouvez les récupérer comme suit :
#[Template("front_page")] public function frontPage(){ $socials = $this->customize()->getPanel('reseau_social', castArray: true); return $this->render("front-page.html.twig", compact("socials")); }
{% for social in socials %} {% if social.actif %} <a href="{{ social.url }}" style="color: {{ social.couleur }}"> <i class="{{ social.icone }}"></i> {{ social.nom }} </a> {% endif %} {% endfor %}
Bonnes pratiques
- Limitez le nombre d'itérations pour des raisons de performance
- Préremplissez les valeurs par défaut pour faciliter la configuration
- Documentez les champs avec des descriptions claires pour les utilisateurs finaux