Die Objekte restaurant, brand, widget und analytics

Stammdaten, Markenwerte, Buchungs-Widget und Reichweitenmessung — Feld für Feld.

Für Entwickler

Voraussetzungen

  • Recht: website:write

`restaurant` führt `id`, `name`, `slug`, `description`, `tagline`, `email`, `phone`, `website`, `address_full`, `booking_url`, `logo_url`, `icon_url` und `opening_hours`. `address_full` ist die fertig zusammengesetzte Adresse; `booking_url` eine VOLLSTÄNDIGE Adresse zur Buchungsstrecke, kein Pfad.

`restaurant.opening_hours` ist eine Liste über sieben Tage, von Montag bis Sonntag. Je Eintrag: `label` (der deutsche Wochentag), `closed` (Wahrheitswert) und `times` (die Zeiten als fertiger Text, mehrere Fenster durch Komma getrennt). Die Zeiten stammen aus dem aktiven Standard-Set.

`brand` führt `primary`, `accent`, `background`, `text`, `font_headline` und `font_body` — die Markenwerte aus den Branding-Einstellungen.

`widget` führt `display_mode` (`embed` oder `floating`), `embed_url`, `loader_url`, `slug`, `floating_button_text`, `floating_position`, `floating_offset_x`, `floating_offset_y`, `floating_size`, `floating_icon_url`, `primary_color` und `accent_color`.

`analytics` führt `enabled`, `script_url` und `slug` für die cookiefreie Reichweitenmessung. Ohne hinterlegte Einstellung ist sie eingeschaltet.

`page_title` und `page_meta` (mit `title` und `description`) stammen aus den SEO-Feldern der jeweiligen Seite. `now` ist der Zeitpunkt des Renderns als Zeichenkette.

Codebeispiele

Die Stammdaten ausgeben
Liquid
<address>  <strong>{{ restaurant.name | escape }}</strong>  {%- if restaurant.tagline %}<em>{{ restaurant.tagline | escape }}</em>{% endif %}  <p>{{ restaurant.address_full | escape }}</p>  {%- if restaurant.phone %}<a href="tel:{{ restaurant.phone | url_encode }}">{{ restaurant.phone }}</a>{% endif %}  {%- if restaurant.email %}<a href="mailto:{{ restaurant.email }}">{{ restaurant.email }}</a>{% endif %}  {%- if restaurant.website %}<a href="{{ restaurant.website | safe_url }}">Website</a>{% endif %}</address>
`address_full` ist bereits zusammengesetzt (Strasse, PLZ und Ort, Land) — Sie müssen die Einzelteile nicht selbst zusammenfügen, sie stehen auch gar nicht getrennt zur Verfügung. Jedes Feld ausser `id`, `name`, `slug` und `booking_url` kann fehlen, fragen Sie also vorher.
Die Öffnungszeiten als Tabelle
Liquid
<table>{%- for tag in restaurant.opening_hours %}  <tr><td>{{ tag.label }}</td><td>{% if tag.closed %}{{ 'fuss.geschlossen' | t }}{% else %}{{ tag.times }}{% endif %}</td></tr>{%- endfor %}</table>{{ restaurant.opening_hours | where: 'closed', false | size }} Tage geöffnet.
Immer SIEBEN Einträge, von Montag bis Sonntag, auch wenn der Betrieb nur an zweien öffnet — ein geschlossener Tag hat `closed: true` und ein leeres `times`. `label` ist bereits der deutsche Wochentag, `times` bereits der fertige Text mit mehreren Fenstern durch Komma getrennt.
Das Buchungs-Widget einbinden
Liquid
{% if widget.display_mode == 'floating' %}  <script src="{{ widget.loader_url | safe_url }}"          data-slug="{{ widget.slug }}"          data-mode="floating"          async></script>{% else %}  <iframe src="{{ widget.embed_url | safe_url }}" title="Reservierung" loading="lazy"></iframe>{% endif %}
Beide Adressen sind ABSOLUT und zeigen auf die App — das muss so sein, weil die Website unter einer anderen Herkunft läuft (Subdomain oder Kundendomain). Ein relativer Pfad liefe dort ins Leere. Der schwebende Knopf gehört ans Ende von `layout/theme.liquid`, die Einbettung in einen Abschnitt.
brand oder settings — welches von beiden?
Liquid
aus dem Branding des Betriebs: {{ brand.primary }} / {{ brand.font_headline }}
aus den Theme-Einstellungen: {{ settings.color_accent }} / {{ settings.font_headline }}
Nehmen Sie im Regelfall `settings`. Dort sind die Markenwerte bereits eingeflossen, und der Redakteur kann sie im Theme-Editor überschreiben. `brand` ist der ungefilterte Blick auf das Branding — nützlich, wenn Sie irgendwo bewusst die Markenfarbe wollen und nicht die eingestellte.

Wo im Dashboard

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

Im Dashboard öffnen