Nous introduisons un nouveau type: objects dans les types pris en charge pour les paramètres de thème qui peut être utilisé pour remplacer le type existant json_schema que nous avons l’intention de déprécier bientôt.
Définir un paramètre de thème de type objets
Pour créer un paramètre de thème de type objets, définissez d’abord une clé de niveau supérieur comme pour tout paramètre de thème, qui sera utilisée comme nom du paramètre.
links: ...
Ajoutez ensuite les mots-clés type, default et schema au paramètre.
links:
type: objects
default: []
schema: ...
type: objects indique qu’il s’agira d’un paramètre de type objets, tandis que l’annotation default: [] définit la valeur par défaut du paramètre comme un tableau vide. Notez que la valeur par défaut peut également être définie comme un tableau d’objets, ce que nous démontrerons une fois que le schema aura été défini.
Pour définir le schéma, définissez d’abord le name du schéma comme suit :
links:
type: objects
default: []
schema:
name: link
Ensuite, nous ajouterons le mot-clé properties au schéma, ce qui nous permettra de définir et de valider l’apparence de chaque objet.
links:
type: objects
default: []
schema:
name: link
properties:
name: ...
Dans l’exemple ci-dessus, nous indiquons que l’objet link a une propriété name. Pour définir le type de données attendu, chaque propriété doit définir le mot-clé type.
links:
type: objects
default: []
schema:
name: link
properties:
name:
type: string
La définition du schéma ci-dessus indique que l’objet link a une propriété name de type string, ce qui signifie que seules des valeurs de chaîne seront acceptées pour cette propriété. Actuellement, les types suivants sont pris en charge :
string: La valeur de la propriété est stockée sous forme de chaîne.integer: La valeur de la propriété est stockée sous forme d’entier.float: La valeur de la propriété est stockée sous forme de nombre à virgule flottante.boolean: La valeur de la propriété esttrueoufalse.enum: La valeur de la propriété doit être l’une des valeurs définies dans le mot-cléchoices.links: type: objects default: [] schema: name: link properties: name: type: enum choices: - name 1 - name 2 - name 3categories: La valeur de la propriété est un tableau d’identifiants de catégories valides.groups: La valeur de la propriété est un tableau d’identifiants de groupes valides.tags: La valeur de la propriété est un tableau de noms de tags valides.
Une fois le schéma défini, la valeur par défaut du paramètre peut maintenant être définie en définissant un tableau en yaml comme suit :
links:
type: objects
default:
- name: link 1
title: link 1 title
- name: link 2
title: link 2 title
schema:
name: link
properties:
name:
type: string
title:
type: string
Propriétés requises
Toutes les propriétés définies sont facultatives par défaut. Pour marquer une propriété comme requise, annotez simplement la propriété avec required: true. Une propriété peut également être marquée comme facultative en l’annotant avec required: false.
links:
type: objects
default: []
schema:
name: link
properties:
name:
type: string
required: true
title:
type: string
required: false
Validations personnalisées
Pour certains types de propriétés, il existe un support intégré pour les validations personnalisées qui peuvent être déclarées en annotant la propriété avec le mot-clé validations.
links:
type: objects
default: []
schema:
name: link
properties:
name:
type: string
required: true
validations:
min: 1
max: 2048
url: true
Validations pour les types string
min_length: Longueur minimale de la propriété. La valeur du mot-clé doit être un entier.max_length: Longueur maximale de la propriété. La valeur du mot-clé doit être un entier.url: Valide que la propriété est une URL valide. La valeur du mot-clé peut êtretrue/false.
Validations pour les types integer et float
min: Valeur minimale de la propriété. La valeur du mot-clé doit être un entier.max: Valeur maximale de la propriété. La valeur du mot-clé doit être un entier.
Validations pour les types tags, groups et categories
min: Nombre minimum d’enregistrements pour la propriété. La valeur du mot-clé doit être un entier.max: Nombre maximum d’enregistrements pour la propriété. La valeur du mot-clé doit être un entier.
Structure d’objets imbriqués
Un objet peut également avoir une propriété contenant un tableau d’objets. Pour créer une structure d’objets imbriqués, une propriété peut également être annotée avec type: objects et la définition de schema associée.
sections:
type: objects
default:
- name: section 1
links:
- name: link 1
url: /some/url
- name: link 2
url: /some/other/url
schema:
name: section
properties:
name:
type: string
required: true
links:
type: objects
schema:
name: link
properties:
name:
type: string
url:
type: string
Description et localisation des paramètres
Pour ajouter une description au paramètre dans la locale en, créez un fichier locales/en.yml avec le format suivant, étant donné le paramètre de thème de type objets suivant.
sections:
type: objects
default:
- name: section 1
links:
- name: link 1
url: /some/url
- name: link 2
url: /some/other/url
schema:
name: section
properties:
name:
type: string
required: true
links:
type: objects
schema:
name: link
properties:
name:
type: string
url:
type: string
en:
theme_metadata:
settings:
sections:
description: Ceci est une description pour le paramètre de thème des sections
schema:
properties:
name:
label: Nom
description: La description de la propriété
links:
name:
label: Nom
description: La description de la propriété
url:
label: URL
description: La description de la propriété
Ce document est contrôlé par version - suggérez des modifications sur github.



