Speisekarte, Navigation und Öffnungszeiten im Template
Die vier Inhaltsobjekte, die aus der Verwaltung kommen — jeweils als Liste und als Nachschlagewerk.
Für EntwicklerVoraussetzungen
- Recht: website:write
Jedes dieser Objekte gibt es zweimal: als Liste zum Durchlaufen und als Zuordnung zum gezielten Nachschlagen. Die Zuordnung braucht man, wenn ein Abschnitt per Einstellung auswählen lässt, welches Menü er zeigen soll.
`products` ist Ihre Speisekarte. Je Eintrag: `id`, `title`, `subtitle`, `description`, `price` (bereits in deutscher Schreibweise als Text, etwa „14,90 €"), `price_cents` (die Zahl in Cent), `image_url`, `is_vegetarian`, `is_vegan` und `is_gluten_free`. Dazu `products_by_id`.
`navigation_menus` sind die Navigationsmenüs. Je Eintrag: `id`, `handle`, `title` und `items`; je Eintrag darin `label`, `url`, `open_in_new` und `target_id`. Nachschlagen über `navigation_menus_by_id` und `navigation_menus_by_handle` — letzteres ist der bequeme Weg, ein Menü mit fester Kurzkennung im Fussbereich einzubinden.
`opening_hours_sets` sind die Öffnungszeiten-Sets. Je Eintrag: `id`, `title` und `days` mit denselben Feldern wie `restaurant.opening_hours`. Dazu `opening_hours_sets_by_id`. Damit zeigen Sie bei Bedarf die Zeiten der Terrasse getrennt von denen des Innenbereichs.
`menus` sind die Speisekarten-Menüs aus der Warenwirtschaft. Je Eintrag: `id`, `name` und `categories` als Liste von Bezeichnungen. Dazu `menus_by_id`.
Wie eine Einstellung dem Redakteur diese Dinge zur Auswahl stellt, steht im Artikel über die Einstellungstypen — das Stichwort dort heisst `dynamic_options`.
Codebeispiele
<ul class="speisekarte">{%- for gericht in products %} <li> <span>{{ gericht.title | escape }}</span> {%- if gericht.description != blank %}<span>{{ gericht.description | escape }}</span>{% endif %} <span>{{ gericht.price }}</span> {%- if gericht.is_vegan %}<span class="zeichen">vegan</span> {%- elsif gericht.is_vegetarian %}<span class="zeichen">vegetarisch</span>{% endif %} {%- if gericht.is_gluten_free %}<span class="zeichen">glutenfrei</span>{% endif %} </li>{%- else %} <li>Die Karte wird gerade überarbeitet.</li>{%- endfor %}</ul>Mit Filter: {{ products | where: 'is_vegan', true | map: 'title' | join: ', ' }}
Mit Schleife: {% for g in products %}{% if g.is_vegan %}{{ g.title }} {% endif %}{% endfor %}
Alles ausser vegan: {{ products | reject: 'is_vegan' | size }} Gerichte{%- assign gewaehlt = menus_by_id[section.settings.menu_id] | default: menus[0] -%}{% if gewaehlt %} <h3>{{ gewaehlt.name | escape }}</h3> <ul>{% for kategorie in gewaehlt.categories %}<li>{{ kategorie | escape }}</li>{% endfor %}</ul>{% endif %}{%- assign menue = navigation_menus_by_handle['hauptmenue'] -%}<nav>{%- for eintrag in menue.items %} <a href="{{ eintrag.url | safe_url }}"{% if eintrag.open_in_new %} target="_blank" rel="noopener"{% endif %}>{{ eintrag.label | escape }}</a>{%- endfor %}</nav>{%- assign satz = opening_hours_sets_by_id[section.settings.zeiten_id] -%}{%- assign tage = satz.days | default: restaurant.opening_hours -%}<h4>{{ satz.title | default: 'Öffnungszeiten' }}</h4><ul>{% for tag in tage %}<li>{{ tag.label }}: {% if tag.closed %}geschlossen{% else %}{{ tag.times }}{% endif %}</li>{% endfor %}</ul>Siehe auch
- Alle Objekte, die eine Vorlage bekommtDie vollständige Liste — was nicht darin steht, ist im Template leer, ohne Fehlermeldung.
- Welche Einstellungstypen es gibtZwölf Typen, die der Editor darstellt — alles andere erscheint stillschweigend gar nicht.
- Die Objekte restaurant, brand, widget und analyticsStammdaten, Markenwerte, Buchungs-Widget und Reichweitenmessung — Feld für Feld.