Theme-Einstellungen: Schema, Werte und ihre Rangfolge

Wie aus Schema, gespeicherten Werten und dem Branding des Betriebs das Objekt settings entsteht.

Für Entwickler

Voraussetzungen

  • Recht: website:write

Zwei Dateien gehören zusammen. `config/settings_schema.json` beschreibt, welche Einstellungen es gibt und wie sie im Editor erscheinen — in Gruppen, jede mit `name` und `settings`. `config/settings_data.json` enthält die gespeicherten Werte, umschlossen von einem Objekt `current`.

Beim Rendern entsteht `settings` in drei Lagen. Erstens die Vorgabewerte aus dem Schema. Zweitens darübergelegt, was in `settings_data.json` steht. Drittens — und das ist der Teil, der überrascht — gewinnen für einige Schlüssel die Markenwerte des Betriebs ZURÜCK, sofern der Wert nicht vom Redakteur abweichend gesetzt wurde. Als „abweichend" gilt ein Wert, der gesetzt, nicht leer und ungleich dem Vorgabewert ist.

So bleibt die Farbe eines Themes an die Marke gebunden, solange niemand sie eigens überschreibt — und löst sich davon, sobald er es tut. Welche Schlüssel das betrifft, steht im Artikel über die Marken-Einstellungen.

Einstellungen eines ABSCHNITTS liegen nicht hier, sondern in der jeweiligen Vorlage unter `sections.<kennung>.settings`. Es gibt keinen getrennten Speicher dafür.

Beim Speichern durch den Editor bleiben Schlüssel erhalten, die er nicht kennt. Sie können also Werte pflegen, die nur Ihre Vorlagen benutzen, ohne dass sie beim nächsten Speichern verschwinden. Gruppen mit den Namen „Öffnungszeiten", „Adresse" oder „Kontaktdaten" blendet der Editor bewusst aus — diese Angaben gehören in die Stammdaten des Betriebs, nicht ins Theme.

Codebeispiele

config/settings_schema.json
AusschnittJSON
[  {    "name": "Farben",    "settings": [      { "type": "color", "id": "color_bg", "label": "Hintergrund", "default": "#FBFAF8" },      { "type": "color", "id": "color_accent", "label": "Akzent", "default": "#9A7B4F" },      { "type": "color", "id": "color_text", "label": "Text", "default": "#1C1B19" }    ]  },  {    "name": "Typografie",    "settings": [      { "type": "font_family", "id": "font_headline", "label": "Schrift für Überschriften", "default": "Cormorant Garamond" },      { "type": "font_family", "id": "font_body", "label": "Schrift für Fliesstext", "default": "Inter" }    ]  },  {    "name": "Layout",    "settings": [      { "type": "image_picker", "id": "logo", "label": "Logo", "info": "Leer lassen: dann gilt das Logo aus dem Branding." },      { "type": "range", "id": "container_max", "label": "Maximale Inhaltsbreite", "min": 960, "max": 1600, "step": 20, "default": 1280, "unit": "px" }    ]  },  {    "name": "Texte",    "settings": [      { "type": "text", "id": "fussnote", "label": "Fusszeile", "default": "Küche & <Bar> — täglich ab 17 Uhr" }    ]  }]
Ausschnitt: läuft nicht für sich allein — er gehört an die passende Stelle einer bestehenden Vorlage.Eine Liste von GRUPPEN, jede mit `name` und `settings`. Die Gruppe ist nur die Überschrift im Editor — im Template stehen alle Werte flach unter `settings.<id>`, ohne Gruppenname. Zwei Felder mit derselben `id` in verschiedenen Gruppen überschreiben einander deshalb still.
config/settings_data.json
AusschnittJSON
{  "current": {    "color_accent": "#9A7B4F",    "logo": "https://bilder.example.com/logo.svg"  }}
Ausschnitt: läuft nicht für sich allein — er gehört an die passende Stelle einer bestehenden Vorlage.Die gespeicherten Werte, umschlossen von `current`. Es müssen nicht alle Schlüssel darin stehen — was fehlt, kommt aus dem Vorgabewert des Schemas. Schlüssel, die der Editor nicht kennt, bleiben beim Speichern erhalten: Sie dürfen hier also Werte pflegen, die nur Ihre Vorlagen benutzen.
Die Einstellungen im Template
Liquid
aus settings_data: {{ settings.color_accent }}aus dem Schema-Vorgabewert: {{ settings.container_max }}pxnicht vergeben: [{{ settings.gibt_es_nicht }}]mit Rückfall: {{ settings.gibt_es_nicht | default: 'Vorgabe' }}
Die Rangfolge beim Aufbau von `settings`: Vorgabewerte aus dem Schema, darüber `settings_data.json`, und darüber — nur für die acht Marken-Kennungen und nur solange der Redakteur sie nicht abweichend gesetzt hat — die Werte aus dem Branding des Betriebs.

Wo im Dashboard

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

Im Dashboard öffnen