Das Schema eines Abschnitts
Aufbau der schema.json, die Felder eines Einstellungseintrags und die Falle mit den Vorgabewerten.
Für EntwicklerVoraussetzungen
- Recht: website:write
Die Datei `sections/<typ>.schema.json` enthält ein Objekt mit `name` (der Name im Editor), `settings` (die Einstellungen des Abschnitts), `blocks` (die Blockarten) und `default` (Vorgaben).
Ein Eintrag in `settings` kennt: `type` (Pflicht), `id` (Pflicht, der Schlüssel unter `section.settings`), `label` (Pflicht, die Beschriftung im Editor) sowie optional `default`, `options`, `min`, `max`, `step`, `unit` und `info`.
Der Typ wird beim Einlesen NICHT geprüft. Schreiben Sie einen Typ, den der Editor nicht kennt, entsteht kein Fehler — das Feld erscheint einfach nicht. Die Liste der unterstützten Typen steht in einem eigenen Artikel.
Zusätzlich wertet der Editor `max_blocks` aus und verweigert danach weitere Blöcke. Beim Rendern wird die Zahl nicht erzwungen.
`literal_settings: true` am Schema (nicht am einzelnen Feld) schaltet die Liquid-Auswertung der Einstellungs- und Blockwerte dieses Abschnitts ab: ein `{{ restaurant.name }}` in einem Textfeld bleibt dann wörtlich stehen. Gesetzt wird das von den Abschnitten des Spiegel-Klons, deren Werte Fremdtext einer anderen Website sind — es taugt für jeden Abschnitt, dessen Werte nie Platzhalter enthalten sollen. Wer einen solchen Abschnitt um Felder erweitert, die Platzhalter verstehen sollen, lässt das Kennzeichen bewusst weg oder löst die Werte im Liquid des Abschnitts selbst auf.
DIE FALLE bei den Vorgabewerten: Für einen Abschnitt im Rumpf einer Seite zählt ausschliesslich das `default` AM EINZELNEN FELD. Der Block `default.settings` am Schema wird dort ignoriert — er wirkt nur bei Abschnitten, die über `{% section %}` aus dem Layout kommen, also bei Kopf- und Fussbereich. Wer sich darauf verlässt, sieht seinen Abschnitt leer.
Codebeispiele
aus default.settings: [{{ section.settings.ueberschrift }}]
ebenfalls aus default.settings: [{{ section.settings.anker }}]
nur am Feld hinterlegt: [{{ section.settings.nur_am_feld }}]{ "name": "Merkprobe", "settings": [ { "type": "text", "id": "nur_am_feld", "label": "Nur am Feld", "default": "AM FELD" } ], "default": { "settings": { "ueberschrift": "AUS DEFAULT.SETTINGS", "anker": "oben" } }}{% section 'merkprobe' %}Vorgabe im Schema: „Unsere Tageskarte"
Wert in templates/index.json: „Heute bei {% raw %}{{ restaurant.name }}{% endraw %}"
Was ankommt: {{ sections.tageskarte.settings.ueberschrift }}Meldungen, die hierher gehören
Siehe auch
- Welche Einstellungstypen es gibtZwölf Typen, die der Editor darstellt — alles andere erscheint stillschweigend gar nicht.
- Blöcke innerhalb eines AbschnittsWiederholbare Einheiten — einzelne Gerichte, Bilder, Stimmen — samt der drei Kurzformen, die TacticTable dazulegt.
- Einen eigenen Abschnitt bauenZwei Dateien genügen: die Vorlage und ihr Schema — danach steht der Abschnitt im Theme-Editor zur Auswahl.