Wir führen einen neuen type: objects für die unterstützten Typen für Theme-Einstellungen ein, der verwendet werden kann, um den bestehenden Typ json_schema zu ersetzen, dessen Einstellung wir bald einstellen werden.
Definieren einer Theme-Einstellung vom Typ „Objekte“
Um eine Theme-Einstellung vom Typ „Objekte“ zu erstellen, definieren Sie zunächst einen Schlüssel auf oberster Ebene, genau wie bei jeder Theme-Einstellung, der als Name der Einstellung verwendet wird.
links: ...
Fügen Sie als Nächstes die Schlüssel type, default und schema zur Einstellung hinzu.
links:
type: objects
default: []
schema: ...
type: objects zeigt an, dass es sich um eine Einstellung vom Typ „Objekte“ 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, was wir demonstrieren werden, sobald das schema definiert ist.
Um das Schema zu definieren, definieren Sie zuerst den name des Schemas wie folgt:
links:
type: objects
default: []
schema:
name: link
Als Nächstes fügen wir den Schlüssel properties zum Schema hinzu, der 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 Objekt link eine Eigenschaft name hat. Um den erwarteten Datentyp zu definieren, muss jede Eigenschaft den Schlüssel type definieren.
links:
type: objects
default: []
schema:
name: link
properties:
name:
type: string
Die obige Schema-Definition besagt, dass das Objekt link eine Eigenschaft name vom Typ string hat, was bedeutet, dass nur String-Werte für diese Eigenschaft akzeptiert werden. Derzeit werden die folgenden Typen unterstützt:
string: Der Wert der Eigenschaft wird als String 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.uploads: Der Wert der Eigenschaft ist die Anhangs-URLenum: Der Wert der Eigenschaft muss einer der im Schlüsselchoicesdefinierten 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 gültiger Kategorie-IDs.groups: Der Wert der Eigenschaft ist ein Array gültiger Gruppen-IDs.tags: Der Wert der Eigenschaft ist ein Array gültiger Tag-Namen.
Nachdem das Schema definiert ist, kann der Standardwert der Einstellung nun durch Definieren eines Arrays in YAML wie folgt festgelegt 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 kennzeichnen, kommentieren Sie die Eigenschaft einfach mit required: true. Eine Eigenschaft kann auch als optional gekennzeichnet werden, indem sie mit required: false kommentiert 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 eingebaute Unterstützung für benutzerdefinierte Validierungen, die deklariert werden können, indem die Eigenschaft mit dem Schlüssel validations kommentiert wird.
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: Minimalwert der Eigenschaft. Der Wert des Schlüsselworts muss eine Ganzzahl sein.max: Maximalwert 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 haben, 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 kommentiert 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
Einstellungsbeschreibung und Lokalisierung
Um eine Beschreibung für die Einstellung in der Locale en hinzuzufügen, erstellen Sie eine Datei locales/en.yml mit dem folgenden Format, gegeben die folgende Theme-Einstellung vom Typ „Objekte“.
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
Dieses Dokument wird versioniert – schlagen Sie Änderungen auf github vor.



