Das Schema eines Abschnitts

Aufbau der schema.json, die Felder eines Einstellungseintrags und die Falle mit den Vorgabewerten.

Für Entwickler

Voraussetzungen

  • 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.

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

sections/merkprobe.liquid
Liquid
aus default.settings: [{{ section.settings.ueberschrift }}]
ebenfalls aus default.settings: [{{ section.settings.anker }}]
nur am Feld hinterlegt: [{{ section.settings.nur_am_feld }}]
Ein Versuchsaufbau, kein Baustein für den Betrieb: er macht sichtbar, welche Vorgabewerte `{% section %}` tatsächlich einsetzt.
sections/merkprobe.schema.json
AusschnittJSON
{  "name": "Merkprobe",  "settings": [    { "type": "text", "id": "nur_am_feld", "label": "Nur am Feld", "default": "AM FELD" }  ],  "default": {    "settings": {      "ueberschrift": "AUS DEFAULT.SETTINGS",      "anker": "oben"    }  }}
Ausschnitt: läuft nicht für sich allein — er gehört an die passende Stelle einer bestehenden Vorlage.Zwei Orte für Vorgabewerte: `default.settings` am Schema und `default` am einzelnen Feld. Sie wirken NICHT an denselben Stellen — das nächste Beispiel zeigt, welcher gewinnt.
Die Falle mit den Vorgabewerten
Liquid
{% section 'merkprobe' %}
Der Abschnitt steht in KEINER Vorlage, es gibt also nichts zu überschreiben. Trotzdem bleibt `nur_am_feld` leer: das Tag `{% section %}` setzt AUSSCHLIESSLICH `default.settings` ein, das `default` am einzelnen Feld ignoriert es. Umgekehrt wird für einen Abschnitt im RUMPF einer Seite nur das `default` am Feld ausgewertet. Tragen Sie Vorgaben deshalb an beiden Stellen ein.
Und so überschreibt die Vorlage die Vorgabe
Liquid
Vorgabe im Schema: „Unsere Tageskarte"
Wert in templates/index.json: „Heute bei {% raw %}{{ restaurant.name }}{% endraw %}"
Was ankommt: {{ sections.tageskarte.settings.ueberschrift }}
Die Rangfolge ist immer dieselbe: Schema-Vorgabe, darüber der Wert aus der Vorlage. Und weil ein Einstellungswert selbst Liquid enthalten darf, wird `{{ restaurant.name }}` vorher noch aufgelöst — deshalb steht am Ende der Name des Betriebs da.

Wo im Dashboard

/restaurant/[slug]/website/themes/[id]/code

Im Dashboard öffnen