Wir führen einen neuen type: objects in die unterstützten Typen für Theme-Einstellungen ein, der verwendet werden kann, um den vorhandenen json_schema-Typ zu ersetzen, dessen Deprekation wir bald beabsichtigen.
Definieren einer Theme-Einstellung vom Typ „objects“
Um eine Theme-Einstellung vom Typ „objects“ zu erstellen, definieren Sie zunächst einen Top-Level-Schlüssel wie jede Theme-Einstellung, der als Name der Einstellung verwendet wird.
links: ...
Fügen Sie als Nächstes die Schlüsselwörter type, default und schema zur Einstellung hinzu.
links:
type: objects
default: []
schema: ...
type: objects gibt an, dass es sich um eine Einstellung vom Typ „objects“ handelt, während die Anmerkung default: [] den Standardwert der Einstellung auf ein leeres Array setzt. Beachten Sie, dass der Standardwert auch auf ein Array von Objekten gesetzt werden kann, das wir demonstrieren werden, sobald das schema definiert ist.
Um das Schema zu definieren, definieren Sie zunächst den name des Schemas wie folgt:
links:
type: objects
default: []
schema:
name: link
Als Nächstes fügen wir das Schlüsselwort properties zum Schema hinzu, das es uns ermöglicht, zu definieren und zu validieren, wie jedes Objekt aussehen soll.
links:
type: objects
default: []
schema:
name: link
properties:
name: ...
Im obigen Beispiel geben wir an, dass das link-Objekt eine name-Eigenschaft hat. Um den erwarteten Datentyp zu definieren, muss jede Eigenschaft das Schlüsselwort type definieren.
links:
type: objects
default: []
schema:
name: link
properties:
name:
type: string
Die obige Schema-Definition besagt, dass das link-Objekt eine name-Eigenschaft vom Typ string hat, was bedeutet, dass nur Zeichenfolgenwerte für die Eigenschaft akzeptiert werden. Derzeit werden die folgenden Typen unterstützt:
string: Der Wert der Eigenschaft wird als Zeichenfolge gespeichert.integer: Der Wert der Eigenschaft wird als Ganzzahl gespeichert.float: Der Wert der Eigenschaft wird als Gleitkommazahl gespeichert.boolean: Der Wert der Eigenschaft isttrueoderfalse.enum: Der Wert der Eigenschaft muss einer der inchoicesdefinierten Werte sein.links: type: objects default: [] schema: name: link properties: name: type: enum choices: - name 1 - name 2 - name 3categories: Der Wert der Eigenschaft ist ein Array von gültigen Kategorie-IDs.groups: Der Wert der Eigenschaft ist ein Array von gültigen Gruppen-IDs.tags: Der Wert der Eigenschaft ist ein Array von gültigen Tag-Namen.
Mit dem definierten Schema kann der Standardwert der Einstellung nun durch Definieren eines Arrays in YAML wie folgt gesetzt werden:
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
Erforderliche Eigenschaften
Alle definierten Eigenschaften sind standardmäßig optional. Um eine Eigenschaft als erforderlich zu markieren, annotieren Sie die Eigenschaft einfach mit required: true. Eine Eigenschaft kann auch als optional markiert werden, indem sie mit required: false annotiert wird.
links:
type: objects
default: []
schema:
name: link
properties:
name:
type: string
required: true
title:
type: string
required: false
Benutzerdefinierte Validierungen
Für bestimmte Eigenschaftstypen gibt es integrierte Unterstützung für benutzerdefinierte Validierungen, die durch Annotation der Eigenschaft mit dem Schlüsselwort validations deklariert werden können.
links:
type: objects
default: []
schema:
name: link
properties:
name:
type: string
required: true
validations:
min: 1
max: 2048
url: true
Validierungen für string-Typen
min_length: Minimale Länge der Eigenschaft. Der Wert des Schlüsselworts muss eine Ganzzahl sein.max_length: Maximale Länge der Eigenschaft. Der Wert des Schlüsselworts muss eine Ganzzahl sein.url: Validiert, dass die Eigenschaft eine gültige URL ist. Der Wert des Schlüsselworts kanntrue/falsesein.
Validierungen für integer- und float-Typen
min: Minimaler Wert der Eigenschaft. Der Wert des Schlüsselworts muss eine Ganzzahl sein.max: Maximaler Wert der Eigenschaft. Der Wert des Schlüsselworts muss eine Ganzzahl sein.
Validierungen für tags, groups und categories-Typen
min: Minimale Anzahl von Datensätzen für die Eigenschaft. Der Wert des Schlüsselworts muss eine Ganzzahl sein.max: Maximale Anzahl von Datensätzen für die Eigenschaft. Der Wert des Schlüsselworts muss eine Ganzzahl sein.
Verschachtelte Objektstruktur
Ein Objekt kann auch eine Eigenschaft enthalten, die ein Array von Objekten enthält. Um eine verschachtelte Objektstruktur zu erstellen, kann eine Eigenschaft auch mit type: objects und der zugehörigen schema-Definition annotiert werden.
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
Beschreibung und Lokalisierung der Einstellung
Um eine Beschreibung für die Einstellung im en-Locale hinzuzufügen, erstellen Sie eine Datei locales/en.yml mit dem folgenden Format, das die folgende Theme-Einstellung vom Typ „objects“ verwendet.
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: Dies ist eine Beschreibung für die Theme-Einstellung „sections“
schema:
properties:
name:
label: Name
description: Die Beschreibung für die Eigenschaft
links:
name:
label: Name
description: Die Beschreibung für die Eigenschaft
url:
label: URL
description: Die Beschreibung für die Eigenschaft
Dieses Dokument ist versionskontrolliert – schlagen Sie Änderungen auf GitHub vor.



