Seitenvorlagen: templates/*.json

Welche Abschnitte auf welcher Seite stehen, in welcher Reihenfolge — und wie man Liquid in einen Einstellungswert schreibt.

Für Entwickler

Voraussetzungen

  • Recht: website:write

Je Seitenvorlage eine Datei unter `templates/`. Der Dateiname ohne Endung ist der Schlüssel, den eine Website-Seite unter „Template" auswählt.

Die Datei enthält `name` (der Anzeigename), `sections` (eine Zuordnung von Abschnitts-Kennung auf den Abschnitt) und `order` (die Reihenfolge dieser Kennungen). Ein Eintrag unter `sections` führt `type` (den Dateinamen des Abschnitts), `settings`, optional `blocks` mit `block_order` und optional `disabled`.

Die KENNUNG ist frei wählbar und muss nur innerhalb der Vorlage eindeutig sein; `type` verweist auf die Datei. So kann derselbe Abschnitt mehrfach mit unterschiedlichen Werten auf einer Seite stehen.

`disabled: true` blendet einen Abschnitt auf der Seite aus, behält ihn aber im Editor. Das entspricht dem Augensymbol in der Abschnittsliste.

Eine Eigenheit, die es anderswo nicht gibt: Ein Einstellungswert darf LIQUID enthalten. Steht in einer Vorlage `"headline": "Willkommen bei {{ restaurant.name }}"`, wird das vor dem Rendern des Abschnitts aufgelöst. Das gilt für jede Zeichenkette, auch in verschachtelten Listen und Objekten. Schlägt die Auflösung fehl, bleibt der Rohtext stehen.

Codebeispiele

templates/index.json
AusschnittJSON
{  "name": "Startseite",  "sections": {    "kopf": { "type": "kopf", "settings": {} },    "karte": {      "type": "tageskarte",      "settings": {        "ueberschrift": "Heute bei {{ restaurant.name }}",        "anker": "karte"      },      "block_order": ["b1", "b2"],      "blocks": {        "b1": {          "type": "gericht",          "settings": { "name": "Bretonischer Hummer", "beschreibung": "Beurre Blanc, Kaviar, Kerbel", "preis": 48 }        },        "b2": {          "type": "gericht",          "settings": { "name": "Sellerie aus dem Ofen", "beschreibung": "Haselnuss, Apfel, Liebstöckel", "preis": 26 }        }      }    }  },  "order": ["kopf", "karte"]}
Ausschnitt: läuft nicht für sich allein — er gehört an die passende Stelle einer bestehenden Vorlage.Die KENNUNG (`karte`) ist frei wählbar und nur innerhalb der Vorlage eindeutig; `type` verweist auf `sections/tageskarte.liquid`. Derselbe Abschnitt darf also mehrfach mit verschiedenen Werten auf einer Seite stehen. Ohne `order` erscheint nichts — die Reihenfolge kommt nicht aus der Schreibweise des Objekts.
templates/page.json
AusschnittJSON
{  "name": "Generische Seite",  "sections": {    "kopf": { "type": "kopf", "settings": {} },    "inhalt": {      "type": "tageskarte",      "settings": { "ueberschrift": "", "anker": "inhalt" },      "disabled": false    }  },  "order": ["kopf", "inhalt"]}
Ausschnitt: läuft nicht für sich allein — er gehört an die passende Stelle einer bestehenden Vorlage.`disabled: true` blendet einen Abschnitt auf der Seite aus, behält ihn aber im Editor — das entspricht dem Augensymbol in der Abschnittsliste. Welche Vorlage zu welcher Adresse gehört, entscheidet die Seite selbst: die Startseite nimmt `index`, jede andere zuerst ihre eingestellte Vorlage, dann eine Vorlage mit dem Namen ihres Pfades, dann `page`, dann `index`.
Liquid in einem Einstellungswert
Liquid
In der Vorlage steht: {% raw %}Heute bei {{ restaurant.name }}{% endraw %}

{% section 'tageskarte' %}
In der Vorlage steht als Überschrift die Zeichenkette „Heute bei {{ restaurant.name }}". Einstellungswerte werden VOR dem Rendern des Abschnitts durch die Engine geschickt — das gilt für jede Zeichenkette, auch in verschachtelten Listen und Objekten. Schlägt die Auflösung fehl, bleibt der Rohtext stehen, die Seite bricht also nicht ab. Das gibt es in dieser Form bei anderen Anbietern nicht.

Wo im Dashboard

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

Im Dashboard öffnen