Nous introduisons un nouveau type: objects pour les types pris en charge pour les paramètres de thème qui peut être utilisé pour remplacer le type json_schema existant que nous prévoyons de déprécier prochainement.
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, tout comme n’importe quel paramètre de thème, qui sera utilisée comme nom du paramètre.
links: ...
Ensuite, ajoutez 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 possède 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 de schéma ci-dessus indique que l’objet link possède une propriété name de type string, ce qui signifie que seules les valeurs de type 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.uploads: La valeur de la propriété est l’URL de la pièce jointeenum: 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égorie valides.groups: La valeur de la propriété est un tableau d’identifiants de groupe valides.tags: La valeur de la propriété est un tableau de noms de balises valides.
Avec 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, il suffit d’annoter 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 une prise en charge intégrée 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é qui contient un tableau d’objets. Afin de 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 du paramètre et localisation
Pour ajouter une description pour le 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: This is a description for the sections theme setting
schema:
properties:
name:
label: Name
description: The description for the property
links:
name:
label: Name
description: The description for the property
url:
label: URL
description: The description for the property
Ce document est contrôlé par version - suggérez des modifications sur github.



