Présentation des modules et des champs de thème
Dans les modules et les thèmes, les champs sont utilisés pour permettre aux créateurs de contenu de contrôler le style et les fonctionnalités des modules ainsi que des thèmes sur votre site web. Lorsque vous développez un module ou un thème, vous incluez des champs dans un fichier fields.json
, qui sera ensuite traduit vers les éditeurs de thème et de contenu.
Découvrez ci-dessous comment créer et gérer des options pour les champs de module et de thème. Pour en savoir plus sur les types de champs spécifiques, consultez le guide de référence sur les types de modules et de champs.
Vous pouvez ajouter des champs au fichier fields.json
d'un module localement par le biais du CLI HubSpot et dans l'éditeur de module présent dans l'application. Pour ajouter des champs à un thème, vous devez mettre à jour le fichier fields.json
du thème en utilisant l'ILC.
Lors du développement local d'un module ou d'un thème, les champs peuvent être modifiés par le biais d'un fichier fields.json
situé dans le dossier du module ou du thème. Pour les modules, ce fichier est automatiquement créé lors de l'utilisation de la commande hs create module
. Toutes les options de champ disponibles dans l'éditeur de module sont disponibles sous forme de propriétés que vous pouvez ajouter ou modifier dans le fichier fields.json
. Cela comprend les champs, les groupes et les conditions des répéteurs. L'un des avantages de l'édition locale est qu'elle facilite l'inclusion de vos modules dans les systèmes de contrôle de version tels que git.
Le gestionnaire de conception dispose d'une interface utilisateur intégrée dédiée à l'éditeur de module qui vous permet de créer, de regrouper et de modifier les champs de module. L'éditeur de module contient un aperçu du module qui vous permet de visualiser le module seul, ainsi que de tester ses champs. Vous devez toujours tester les modules sur un modèle que vous prévoyez d'utiliser afin de voir quels styles de modèles peuvent les affecter. Attention : si un module est contenu dans un dossier verrouillé, il ne peut pas être modifié de cette façon.

Remarque : Si vous travaillez principalement en local, mais que vous souhaitez utiliser l'éditeur de module pour configurer les champs, veillez à récupérer vos modifications. Ceci est particulièrement important pour les personnes utilisant des systèmes de contrôle de version tels que git.
Par défaut, les champs de module des éditeurs de contenu s'empilent verticalement. Toutefois, vous pouvez placer des champs de module côte à côte en ajoutant la propriété display_width
aux champs dans le fichier fields.json
avec la valeur half_width
.
Un champ unique dont le display_width
de half_width
apparaîtra en demi-largeur dans l'éditeur de contenu. Lorsque le champ situé au-dessus ou en dessous de ce champ dans le fichier fields.json
est défini sur half_width
, ils sont placés côte à côte.
Lorsque les champs sont liés les uns aux autres, il est souvent judicieux de les afficher sous forme de groupes. Les modules et les thèmes permettent de regrouper plusieurs champs.

Les groupes de champs sans groupes de champs imbriqués s'affichent simplement avec des séparateurs au-dessus et en dessous du groupe, et l'étiquette du groupe est affichée en haut du groupe.

Les groupes de champs peuvent être imbriqués. Un groupe de champs qui contient un autre groupe de champs s'affiche comme un bouton. En cliquant sur le bouton pour visualiser le groupe, le contenu de ce groupe s'affiche.
Les groupes de champs peuvent être imbriqués sur 3 niveaux de profondeur, ce qui signifie que les champs de modules peuvent avoir 4 niveaux de profondeur. Cela facilite la création d'interfaces utilisateur qui transmettent les relations entre les champs et plus de profondeur.
Les objets de groupe de champs peuvent être répertoriés comme enfants d'autres groupes de champs. Leur structure est très similaire à celle des champs eux-mêmes, le seul paramètre spécial étant le paramètre « enfants », qui est un tableau de champs et de groupes qu'ils contiennent.
Les groupes de champs peuvent être définis pour être développés par défaut en définissant la propriété booléenne expanded
sur true
dans les propriétés du groupe fields.json, comme indiqué dans l'exemple de code ci-dessus. Les groupes de champs ne sont pas développés par défaut et lorsque des groupes de champs imbriqués sont utilisés, le groupe parent ne peut pas utiliser cette propriété.
Les groupes de champs créent des dictionnaires qui contiennent les valeurs des champs que vous souhaitez éditer. Si vous imbriquez des groupes de champs, le groupe de champs imbriqué devient un dictionnaire à l'intérieur du dictionnaire du groupe de champs extérieur. Pour accéder à ces données, vous traverserez l'arborescence à partir du thème racine ou de la variable du module, selon le contexte.
Les champs de style sont un type de groupe de champs spécifique dans le fichier fields.json
d'un module ou d'un thème. Celui-ci permet aux créateurs de contenu de contrôler le style d'un module ou d'un thème dans l'éditeur de page et de thème. Découvrez ci-dessous comment ajouter des champs de style à un module ou à un thème. Découvrez les meilleures pratiques pour utiliser et organiser les champs de style.
Champs de style du module
Les champs de style ajoutés à un module apparaissent dans l'onglet Styles de l'éditeur de page lors de l'édition du module :
Lorsque vous ajoutez des champs de style au fichier fields.json
d'un module, vous les ajoutez dans un groupe de styles. Ce groupe, cependant, peut contenir plusieurs groupes en son sein, comme indiqué ci-dessous :
les champs suivants peuvent être utilisés comme champs de style dans les modules. Découvrez chacun des types de champs dans le module et le guide des types de champs.
- Alignement
- Dégradé
- Espacement
- Image d'arrière-plan
- Bordure
- Booléen
- Choix
- Nombre
- Couleur
- Icône
- Image
- Police
- Alignement du texte
Découvrez-en davantage sur les types de champs de modules et de thèmes.
Consultez le modèle du CMS pour obtenir un exemple de champs de style dans le fichier fields.json
d'un module.
Champs de style de thème
Les champs de style ajoutés à un thème apparaissent dans la barre latérale gauche de l'éditeur de thème :
Tous les champs de style contenus dans le fichier fields.json
d'un thème seront ajoutés à la barre latérale gauche de l'éditeur de thème. Il n'est pas nécessaire de les placer dans un groupe de styles, comme illustré ci-dessous :
les champs suivants peuvent être utilisés comme champs de style dans les modules. Découvrez chacun des types de champs dans le module et le guide des types de champs.
Découvrez-en davantage sur les types de champs de modules et de thèmes.
Consultez le modèle du CMS pour obtenir un exemple de champs de style dans le fichier fields.json
d'un thème.
Remarque : Si vous êtes un fournisseur de marketplace, vous ne devez pas remplacer les champs de contenu existants par des champs de style dans les modules existants. La modification de la hiérarchie des champs dans un fichier fields.json
peut entraîner la perte des données des instances de module existantes. Ajoutez de nouveaux champs de style ou créez une nouvelle liste dans laquelle les champs sont regroupés de manière appropriée. Cela permet d'éviter que vos mises à jour ne constituent des changements brusques pour les clients qui utilisent vos thèmes. Pour mettre en place la migration à partir des anciens modules, consultez le forum HubSpot Ideas.
Certains champs de style permettent d'éditer directement des css en fonction de la valeur du champ. Cette fonction est particulièrement utile pour les champs qui peuvent contrôler des styles plus complexes, comme les dégradés. Les champs de style suivants ont une propriété .css
générée :
Lorsque vous créez des modules qui mettent en forme des informations, il arrive souvent que certains types d'informations se répètent. Un module de recette, par exemple, peut avoir un champ dédié aux « Ingrédients ». La plupart des recettes se composent de plus d'un ingrédient. En les dotant d'un champ de texte enrichi, il se peut que vous ne puissiez plus imposer de style cohérent ni ajouter de fonctionnalités autour des ingrédients. C'est là tout l'intérêt des répéteurs. HubSpot dispose de deux formes de répéteurs : les champs répétés et les groupes répétés.
Les champs répétés sont des champs normaux, mais les créateurs de contenu peuvent ajouter, supprimer et réorganiser les instances du champ. En utilisant l'exemple de module de recette ci-dessus, chaque ingrédient peut être un champ de texte répétitif.

Ainsi, le créateur de contenu peut ajouter autant d'ingrédients qu'il le souhaite. Les développeurs obtiennent un tableau qu'ils peuvent parcourir en boucle pour imprimer cette liste d'ingrédients, en appliquant le formatage et les fonctionnalités désirés.
Les champs répéteurs sont utilisés de préférence dans des situations très simples. Il est souvent plus judicieux de répéter les groupes.
Remarque : Il n'est actuellement pas possible de définir l'ordre par défaut des champs répétés.
Les groupes répétés sont des groupes de champs dont l'option de répétition est activée. Les groupes répétés permettent aux créateurs de contenu d'ajouter, de supprimer et de réorganiser des groupes de champs. En utilisant l'exemple de module de recette, supposons que vous souhaitez intégrer votre liste d'ingrédients à une fonctionnalité de liste de courses au sein de votre module de recette.

La quantité d'un ingrédient serait un élément crucial de la liste de courses. Si l'on fournit cette information dans le champ de texte, le module devrait alors analyser le champ de texte et espérer parvenir à séparer la quantité de l'ingrédient. C'est là toute l'utilité des groupes répétés. Le résultat de ces champs est un objet qui peut être parcouru en boucle.
Pour améliorer l'expérience d'édition et empêcher les éditeurs de contenu de fournir des valeurs que vous n'avez pas prises en compte dans le programme, nous vous permettons de définir des valeurs minimales et maximales pour le nombre d'éléments que les créateurs de contenu peuvent ajouter à un champ répété ou à un groupe répété.
Pour les groupes répétés, vous pouvez également définir le champ qui sert de libellé pour cet élément lors de l'affichage du répéteur.

Parameter | Type | Description | Default |
---|---|---|---|
max
| Entier | Nombre maximum d'occurrences de ce groupe. Empêche le créateur de contenu d'ajouter plus que ce nombre d'éléments dans l'interface utilisateur. |
null
|
min
| Entier | Nombre minimum d'occurrences de ce groupe de champs. Empêche le créateur de contenu d'avoir moins de ce nombre d'éléments dans l'interface utilisateur. |
null
|
sorting_label_field
| Chaîne | Il s'agit de l'identifiant du champ dont il faut extraire le texte pour l'afficher dans l'interface utilisateur sur les cartes à glisser. Par défaut, il s'agit du premier champ du groupe. |
La propriété inherited_value
peut être configurée pour qu'un champ hérite de sa valeur par défaut d'autres champs. Pour définir la valeur par défaut d'un champ à partir de la valeur d'un autre champ, définissez default_value_path
comme chemin d'accès au nom du champ cible. Lorsque default_value_path
est défini, il ignorera tout default
défini sur le champ.
Pour accéder aux valeurs d'autres champs, les chemins doivent inclure module
au début comme si vous accédiez à la valeur dans le code HubL du module.
Pour les champs complexes (champs dont les valeurs sont des objets), les utilisateurs peuvent disposer d'une plus grande granularité sur les propriétés héritées grâce à l'option property_value_path
. Tous les chemins référencés dans inherited_value
peuvent également inclure des clés provenant de la valeur d'un champ pour les champs complexes. Par exemple, les champs de couleur ont des valeurs d'objet qui contiennent la couleur du champ ainsi que son opacité. Ainsi, pour obtenir la valeur réelle d'une couleur sans son opacité, le chemin d'accès doit se terminer par .color
. Par exemple, un champ de police ne peut hériter sa couleur que d'un champ de couleur distinct :
Vous pouvez également combiner les effets de default_value_path
et de property_value_path
pour hériter d'une valeur par défaut d'un champ tout en héritant d'une valeur de propriété spécifique d'un champ différent :
Si un champ hérite d'un autre champ, mais qu'il est ensuite directement remplacé au niveau de la page ou dans les paramètres du thème, son lien avec le champ de contrôle est rompu. Les champs liés via default_value_path
ou property_value_paths
n'affecteront plus la valeur de ce champ.
Lors de la définition de champs de module et de thème personnalisés, vous pouvez configurer l'affichage d'un champ en ajoutant l'objet visibility
au champ dans le fichier fields.json
. Par exemple, vous pouvez définir un module de formulaire pour afficher une zone de texte enrichi lorsque le message de remerciement est sélectionné, mais un sélecteur de page lorsqu'une redirection est sélectionnée.
Vous pouvez définir la visibilité en fonction de la valeur de controlling_field_path
ou d'une propriété spécifique dans ce champ à l'aide du paramètre property
.
Vous pouvez également appliquer la visibilité à un champ individuel ou à un groupe de champs pour contrôler la visibilité de tous les éléments du groupe.
Parameter | Type | Description |
---|---|---|
controlling_field_path
| String | Le chemin du champ qui contrôle la condition d'affichage.
|
controlling_value_regex
| String | L'expression régulière dans le champ de contrôle qui doit être présente pour que le champ s'affiche. L'expression régulière doit correspondre à la chaîne entière (et non à un sous-ensemble) et est exécutée en fonction de la casse. |
operator
| String | L'opérateur qui définit la manière dont la valeur
|
property
| String | Définit la visibilité en fonction d'une propriété spécifique du champ cible. Par exemple, vous pouvez activer la visibilité lorsque la propriété |
L'attribut de visibilité ne peut prendre en charge qu'un seul critère à la fois. Pour inclure plusieurs critères avec plusieurs opérateurs ainsi que l'ordre des opérations, vous pouvez utiliser advanced_visibility
.
Parameter | Type | Description |
---|---|---|
visibility_rules
| String | Par défaut, cette valeur est définie sur |
boolean_operator
| String | L'opérateur booléen pour les critères conditionnels. Peut être |
criteria
| Array | Un tableau d'objets de visibilité qui définit les critères conditionnels qui doivent être remplis pour que le champ s'affiche. |
controlling_field_path
| String | Le chemin du champ qui contrôle la condition d'affichage.
|
controlling_value_regex
| String | La valeur dans le champ de contrôle qui doit être respectée pour afficher le champ. Lors de l'utilisation de l'opérateur Un champ avec |
operator
| String | L'opérateur qui définit la manière dont la valeur
La syntaxe de l'expression régulière est obligatoire lors de l'utilisation de |
Par exemple, vous trouverez ci-dessous la première partie du code du module de paiement par défaut. Pour consulter le code complet, vous pouvez cloner le module dans HubSpot, puis le télécharger dans votre environnement local pour afficher le fichier fields.json
du module.
Le code ci-dessus entraîne le comportement suivant :
- Le premier champ (
payment
) est un champ obligatoire (menu déroulant) qui permet au créateur de contenu de sélectionner un lien de paiement spécifique. Dans HubSpot, un créateur de contenu verra les éléments suivants lors du premier ajout du module à la page :
- Une fois qu'un lien de paiement est sélectionné, les trois champs suivants (
checkout_location
,button_text
eticon
) s'affichent. En effet, les champs ont un attributvisibility
contrôlé par le champ depayment
et nécessitant une valeur d'ID dans le paramètreid
du champ de paiement.
Le champ icon
lui-même utilise advanced_visibility
pour apparaître uniquement lorsqu'un lien de paiement est présent dans le champ payment
ET lorsque la case à cocher add_icon
est sélectionnée.
En plus de définir la visibilité dans fields.json
, vous pouvez définir la visibilité dans le gestionnaire de conception en modifiant les options Conditions d'affichage d'un champ.
Après avoir défini la visibilité dans le gestionnaire de conception, vous pouvez récupérer le module à l'aide de l'ILC pour afficher l'attribut visibility
dans le fichier fields.json
du module.
Vous pouvez ajouter des conditions à un champ pour empêcher la modification lorsque les conditions spécifiées sont remplies. Vous pouvez également définir un message à afficher au-dessus du champ lorsqu'il est désactivé pour fournir un contexte dans l'éditeur de contenu.
Les conditions et le message sont définis dans l'objet disabled_controls
du champ. Les conditions pour rendre un champ modifiable sont définies dans l'objet rules
, qui suit le même format que advanced_visibility.
Le code ci-dessous montre à la fois une mise en œuvre simple et avancée des critères rules
:
- Le champ
simple_page
inclut une logique pour désactiver le champ si le champtext_field
est défini surtesting
. - Le champ
fancy_page
inclut une logique pour désactiver le champ sitext_field
outext_field_2
est défini sur une valeur non égale àtesting
ettesting2
respectivement.
Parameter | Type | Description |
---|---|---|
message
| Chaîne | Le message à afficher dans l'éditeur de contenu lorsque le champ est désactivé. |
rules
| Objet | Les conditions d'activation du champ pour modification. |
criteria
| Tableau | Un tableau d'objets de condition qui définit les critères qui doivent être remplis pour que le champ s'affiche. Ce tableau peut contenir plusieurs objets de condition séparés par une logique |
boolean_operator
| Chaîne | L'opérateur booléen pour les critères conditionnels. Peut être |
controlling_field_path
| Chaîne | Le chemin du champ qui contrôle la condition d'affichage.
|
controlling_value_regex
| Chaîne | La valeur dans le champ de contrôle qui doit être respectée pour afficher le champ. Lors de l'utilisation de l'opérateur Un champ avec |
operator
| Chaîne | L'opérateur qui définit la manière dont la valeur
La syntaxe de l'expression régulière est obligatoire lors de l'utilisation de |
Dans l'éditeur de thème, la mise en évidence de l'aperçu peut aider les créateurs de contenu à identifier les champs qui contrôlent les éléments de page. La mise en évidence de l'aperçu fonctionne en associant les champs du thème aux sélecteurs CSS qu'ils affectent, en ajoutant une zone autour de ces éléments lors du survol du champ dans l'éditeur de thème.
Pour configurer la mise en évidence d'aperçu pour les champs de thème, vous inclurez un fichier editor-preview.json
dans le répertoire racine du thème pour mapper les champs de thème à une liste de sélecteurs CSS. Dans le fichier, vous inclurez un tableau pour chaque champ de style que vous souhaitez mettre en évidence contenant les sélecteurs CSS pertinents, en utilisant le format suivant :
Par exemple, le code ci-dessous mettra en évidence les éléments de la page qui sont contrôlés par le champ de police principal. Vous pouvez consulter l'exemple complet dans le fichier editor-preview.json
du thème Growth par défaut.
Pour commencer à générer ce fichier, exécutez la commande d'ILC suivante pour créer le fichier. Lors de la création du fichier, un script s'exécutera pour configurer les mappages initiaux des sélecteurs de champ.
Parameter | Description |
---|---|
theme-directory-path
| Le chemin d'accès au répertoire du thème. |
Après avoir exécuté la commande, vous devrez examiner et affiner le fichier editor-preview.json
pour vous assurer que les champs et les sélecteurs sont mappés correctement. Si la commande generate-selectors fera une supposition rudimentaire sur les champs qui affectent les sélecteurs, vous devrez apporter des corrections en fonction de la façon dont votre thème est construit. Par exemple, cette commande ne peut pas détecter si des modules remplacent le style ou si vous utilisez des macros.
Pour tester ces mappages, téléchargez le thème sur un compte, puis consultez l'éditeur de thème de ce compte (Paramètres > Site web > Thèmes > Voir le thème).
Merci d'avoir partagé votre avis.