Blöcke innerhalb eines Abschnitts

Wiederholbare Einheiten — einzelne Gerichte, Bilder, Stimmen — samt der drei Kurzformen, die TacticTable dazulegt.

Für Entwickler

Voraussetzungen

  • Recht: website:write

Blöcke sind das Mittel für alles, was in einem Abschnitt mehrfach vorkommt. Im Schema deklarieren Sie sie unter `blocks` als Liste von Objekten mit `type`, `name` und `settings`.

In der Vorlage laufen Sie mit `{% for block in section.blocks %}` darüber. Jeder Block hat `block.id`, `block.type` und `block.settings`. Die Reihenfolge ist die, die im Editor gezogen wurde.

DREI KURZFORMEN legt TacticTable zusätzlich in `section.settings`, sobald Blöcke vorhanden sind: `items` und `menu_items` enthalten die Einstellungen aller Blöcke als Liste, `images` die Werte ihres Feldes `url`. Damit lassen sich einfache Aufzählungen und Galerien schreiben, ohne eine eigene Schleife zu bauen.

Mit `max_blocks` im Schema begrenzen Sie die Anzahl im Editor. Erreicht der Redakteur die Grenze, meldet der Editor „Maximale Anzahl an Blöcken erreicht."

Codebeispiele

Über die Blöcke laufen
Liquid
{% for block in section.blocks %}  <li data-block="{{ block.id }}" data-typ="{{ block.type }}">    {{ block.settings.name | escape }}{{ block.settings.preis | money }}  </li>{% endfor %}
Jeder Block trägt `id` (die Kennung aus der Vorlage), `type` (die Blockart aus dem Schema) und `settings`. Die Reihenfolge ist die aus `block_order` — also die, die der Redakteur im Editor gezogen hat.
Eine leere Blockliste abfangen
Liquid
{% if section.blocks == empty %}  <p>Noch nichts eingetragen.</p>{% else %}  <p>{{ section.blocks.size }} Einträge</p>{% endif %} {% for block in section.blocks %}{{ block.settings.name }}{% else %}Noch nichts eingetragen.{% endfor %}
Beide Wege gehen. `{% for %} … {% else %}` ist kürzer und fängt zusätzlich den Fall ab, dass `section.blocks` gar nicht existiert — was bei einem Abschnitt ohne Blöcke im Schema vorkommt.
Die drei Kurzformen: items, menu_items und images
Liquid
{% for eintrag in section.settings.items %}{{ eintrag.name }}; {% endfor %}
Sobald ein Abschnitt Blöcke hat, legt TacticTable zusätzlich `section.settings.items` und `section.settings.menu_items` (jeweils die EINSTELLUNGEN aller Blöcke, ohne `id` und `type`) sowie `section.settings.images` (jeweils das Feld `url` eines Blocks) daneben. Praktisch für einfache Aufzählungen — für alles, was die Blockart unterscheiden muss, brauchen Sie weiterhin `section.blocks`.

Wo im Dashboard

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

Im Dashboard öffnen