Welche Einstellungstypen es gibt

Zwölf Typen, die der Editor darstellt — alles andere erscheint stillschweigend gar nicht.

Für Entwickler

Voraussetzungen

  • Recht: website:write

`text` — einzeiliges Feld. `textarea` — mehrzeiliges Feld. `url` — einzeiliges Feld mit passendem Platzhalter. `font_family` — ebenfalls ein Textfeld, KEIN Auswahlmenü für Schriften.

`color` — Farbwähler mit zusätzlichem Hex-Feld. `range` — Schieberegler; hier gehören `min`, `max` und wahlweise `step` und `unit` dazu. `number` — Zahlenfeld. `checkbox` — Schalter.

`select` — Auswahlmenü; die Möglichkeiten stehen in `options` als Liste aus `value` und `label`.

`image_picker` — öffnet die Mediathek und nimmt daneben eine freie Adresse an. `product_picker` — durchsuchbare Auswahl aus Ihren Produkten. `header` — kein Eingabefeld, sondern eine Zwischenüberschrift im Editor; der Text steht in `content`.

DYNAMISCHE AUSWAHL: Ein `select` kann statt fester `options` das Feld `dynamic_options` tragen, mit einem von drei Werten — `menus`, `opening_hours_sets` oder `navigation_menus`. Der Editor füllt die Liste dann mit den echten Daten des Betriebs und stellt „– Standard –" voran. So wählt der Redakteur, welches Navigationsmenü im Fussbereich steht, ohne dass Sie Kennungen fest eintragen.

NICHT unterstützt werden unter anderem `richtext`, `html`, `video`, `video_url`, `link_list`, `collection`, `blog`, `page`, `radio`, `inline_richtext`, `color_scheme`, `font_picker` und `color_background`. Ein Feld mit einem solchen Typ erscheint im Editor einfach nicht — ohne Fehlermeldung.

Codebeispiele

Jede unterstützte Feldart in einem Schema
AusschnittJSON
{  "name": "Vitrine",  "settings": [    { "type": "header", "id": "trenner_inhalt", "label": "Inhalt", "content": "Inhalt" },    { "type": "text", "id": "ueberschrift", "label": "Überschrift", "default": "Willkommen" },    { "type": "textarea", "id": "fliesstext", "label": "Fliesstext" },    { "type": "url", "id": "ziel", "label": "Verlinktes Ziel" },    { "type": "image_picker", "id": "bild", "label": "Bild" },    { "type": "product_picker", "id": "gericht_id", "label": "Gericht" },    { "type": "color", "id": "hintergrund", "label": "Hintergrundfarbe", "default": "" },    { "type": "font_family", "id": "schrift", "label": "Schrift", "default": "Inter" },    { "type": "range", "id": "abstand", "label": "Innenabstand", "min": 0, "max": 160, "step": 4, "default": 72, "unit": "px" },    { "type": "number", "id": "spalten", "label": "Spalten", "default": 3 },    { "type": "checkbox", "id": "zeige_preise", "label": "Preise anzeigen", "default": true },    {      "type": "select",      "id": "ausrichtung",      "label": "Ausrichtung",      "options": [        { "value": "links", "label": "Links" },        { "value": "mitte", "label": "Mitte" }      ],      "default": "links"    }  ]}
Ausschnitt: läuft nicht für sich allein — er gehört an die passende Stelle einer bestehenden Vorlage.Zwölf Arten, mehr kennt der Editor nicht. `header` ist kein Eingabefeld, sondern eine Zwischenüberschrift — ihr Text steht in `content`. Der Typ wird beim Einlesen NICHT geprüft: schreiben Sie `richtext`, `video_url`, `link_list` oder `color_scheme`, erscheint das Feld einfach nicht, ohne Fehlermeldung.
Dynamische Auswahl statt fester Optionen
AusschnittJSON
{  "name": "Fussbereich",  "blocks": [    {      "type": "navigation",      "name": "Navigations-Menü",      "settings": [        { "type": "select", "id": "menu_id", "label": "Menü", "dynamic_options": "navigation_menus", "options": [], "default": "" }      ]    },    {      "type": "oeffnungszeiten",      "name": "Öffnungszeiten",      "settings": [        { "type": "select", "id": "zeiten_id", "label": "Set", "dynamic_options": "opening_hours_sets", "options": [], "default": "" }      ]    }  ]}
Ausschnitt: läuft nicht für sich allein — er gehört an die passende Stelle einer bestehenden Vorlage.Drei Werte sind erlaubt: `menus`, `opening_hours_sets` und `navigation_menus`. Der Editor füllt die Liste dann mit den echten Daten des Betriebs und stellt „– Standard –" voran. `options` bleibt als leere Liste stehen.
Eine Auswahl im Template auswerten
Liquid
{%- assign menue = navigation_menus_by_id[section.settings.menu_id] -%}{% if menue %}  <h4>{{ menue.title | escape }}</h4>{% else %}  <h4>Kein Menü gewählt</h4>{% endif %}Preise anzeigen: {% if section.settings.zeige_preise %}ja{% else %}nein{% endif %}
Der Wert einer dynamischen Auswahl ist eine KENNUNG, kein Objekt — Sie müssen sie über die passende `…_by_id`-Zuordnung nachschlagen. „– Standard –" liefert eine leere Zeichenkette; das Nachschlagen ergibt dann nichts, und Ihr `else`-Zweig greift.

Wo im Dashboard

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

Im Dashboard öffnen