Wie man benutzerdefinierte Liquid-Logik in Shopify hinzufügt (2026)

Zuletzt aktualisiert
•
Von Experten geprüft
•
5 Min. Lesezeit

Wichtigste Erkenntnisse

  • Liquid ist die Templating-Sprache von Shopify — sie steuert, welche Inhalte basierend auf den Daten deines Shops gerendert werden.
  • Häufige Anwendungsfälle: Zeige Inhalte basierend auf Produkt-Tags, Kunden-Tags, Warenkorbinhalt, Metafeldern oder dem aktuellen Datum an.
  • Grundlegende Liquid-Syntax: {% if %}, {% unless %}, {% for %}, {{ variable | filter }}.
  • Füge benutzerdefinierte Liquid-Logik zu Section-Dateien oder Snippets im Code-Editor hinzu. Fudge kann das für dich schreiben.

Um benutzerdefinierte Liquid-Logik in Shopify hinzuzufügen, öffne den Code-Editor und füge die Tags {% if %}, {% unless %} oder {% for %} zu einer Section- oder Snippet-Datei hinzu. Verwende dabei Shop-Daten wie Produkt-Tags, Kunden-Tags, Metafelder, den Warenkorb oder das Datum. Liquid ist die Templating-Sprache von Shopify: Sie verbindet die Produkte, Kategorien, Kunden und den Warenkorb deines Shops mit dem HTML, das Besucher sehen.

Liquid-Grundlagen – was du wissen musst

Liquid hat zwei Arten von Tags:

Ausgabe-Tags (Output-Tags) {{ }} — zeigen einen Wert an:

{{ product.title }}
{{ product.price | money }}
{{ customer.first_name }}

Logik-Tags {% %} — steuern den Ablauf, werden nicht direkt angezeigt:

{% if product.available %}
{% for item in cart.items %}
{% assign sale_price = product.price | times: 0.9 %}

Filter — transformieren Ausgabewerte mit dem | (Pipe)-Zeichen:

{{ product.price | money }}
{{ product.description | strip_html | truncatewords: 30 }}
{{ 'base.css' | asset_url }}

Inhalte basierend auf Produkt-Tags anzeigen

Produkt-Tags sind eine flexible Möglichkeit, Produkte mit Attributen zu markieren und dann bedingt Inhalte anzuzeigen.

{% if product.tags contains 'new-arrival' %}
  <span class="product-badge">New Arrival</span>
{% endif %}

{% if product.tags contains 'sale' %}
  <span class="sale-badge">On Sale</span>
{% elsif product.tags contains 'clearance' %}
  <span class="clearance-badge">Clearance</span>
{% else %}
  <!-- Kein Badge angezeigt -->
{% endif %}

Anwendungsfälle: Badges für Neuheiten, Sale-Artikel, limitierte Editionen; Ein- oder Ausblenden von Sections basierend auf der Produktkategorie; Anzeigen von Pflegehinweisen nur für bestimmte Produkttypen.

Für Labels, die auf diese Weise erstellt wurden, siehe Benutzerdefinierte Labels auf Shopify-Produktseiten hinzufügen.


Inhalte basierend auf Kunden-Tags anzeigen

Kunden-Tags funktionieren genauso — du taggst Kundenkonten in Shopify (Kunden → Kunde auswählen → Tags) und zeigst dann bedingt Inhalte an.

{% if customer %}
  {% if customer.tags contains 'wholesale' %}
    <p>Wholesale pricing: {{ product.price | times: 0.7 | money }}</p>
  {% else %}
    <p>{{ product.price | money }}</p>
  {% endif %}
{% else %}
  <p>{{ product.price | money }}</p>
{% endif %}

Das ändert den angezeigten Preis, nicht den berechneten Preis. Um Großhandelspreise zu berechnen, verwende Shopify B2B-Kataloge oder einen automatischen Rabatt für getaggte Kunden.

Anwendungsfälle: unterschiedliche Preise für B2B- vs. Einzelhandelskunden, Freischalten versteckter Inhalte für VIP-Kunden, Anzeigen des Treuepunktestands für Mitglieder.


Inhalte basierend auf Metafields anzeigen

Metafields speichern benutzerdefinierte Daten, die an Produkte, Collections, Kunden oder deinen Shop angehängt sind. Sobald sie (über den Shopify-Adminbereich oder eine App) erstellt wurden, kannst du sie in Liquid ausgeben.

{% if product.metafields.custom.ingredients %}
  <div class="ingredients-section">
    <h2>Zutaten</h2>
    {{ product.metafields.custom.ingredients.value }}
  </div>
{% endif %}

Erstellen von Metafields: Einstellungen → Benutzerdefinierte Daten → Produkte → Definition hinzufügen. Lege den Namensraum (z. B. custom) und den Schlüssel (z. B. ingredients) fest.


Inhalte basierend auf dem Warenkorbinhalt anzeigen

Du kannst in jeder Theme-Datei auf den aktuellen Warenkorb zugreifen:

{% if cart.item_count == 0 %}
  <p>Dein Warenkorb ist leer.</p>
{% endif %}

{% if cart.total_price >= 5000 %}
  <!-- Warenkorbwert ist 50€+ (Preise sind in Cent) -->
  <p>Du qualifizierst dich für kostenlosen Versand!</p>
{% else %}
  {% assign remaining = 5000 | minus: cart.total_price %}
  <p>Füge noch {{ remaining | money }} hinzu für kostenlosen Versand.</p>
{% endif %}

Hinweis: Shopify speichert Preise in Cent (Ganzzahlen). 5000 = 50,00 €.


Inhalte basierend auf dem Datum anzeigen

{% assign now = 'now' | date: '%s' | plus: 0 %}
{% assign sale_end = '2026-12-31' | date: '%s' | plus: 0 %}

{% if now < sale_end %}
  <div class="sale-banner">Holiday sale ends December 31!</div>
{% endif %}

date: '%s' konvertiert ein Datum in einen Unix-Timestamp (Sekunden seit 1970), was Datumsvergleiche unkompliziert macht.

Shopify speichert Seiten im Cache, daher ist now die Zeit, zu der die Seite gerendert wurde, und nicht die Zeit, zu der der Besucher sie sieht. Für genaue Cut-offs solltest du das Datum in JavaScript überprüfen.


For-Schleifen – Iterieren über Collections oder Arrays

{% for product in collection.products limit: 4 %}
  <div class="product-card">
    <h3>{{ product.title }}</h3>
    <p>{{ product.price | money }}</p>
  </div>
{% endfor %}

Nützliche Parameter:

  • limit: 4 — nur 4 Elemente rendern
  • offset: 2 — die ersten 2 Elemente überspringen
  • reversed — in umgekehrter Reihenfolge iterieren

Wo du benutzerdefinierte Liquid-Logik hinzufügst

Section-Dateien (sections/your-section.liquid) — der richtige Ort für seitenspezifische Logik. Änderungen sind auf diese Section beschränkt.

Snippets (snippets/your-snippet.liquid) — wiederverwendbare Logik, die über {% render 'your-snippet' %} in mehrere Sections eingebunden werden kann.

theme.liquid — für Logik, die auf jeder Seite ausgeführt werden muss (wie Prüfungen von Kunden-Tags, die das seitenweite Verhalten beeinflussen). Sparsam verwenden.

Arbeite immer in einem duplizierten Theme und teste nach jeder Liquid-Änderung — ein Liquid-Syntaxfehler kann dazu führen, dass deine gesamte Seite leer bleibt.

Füge benutzerdefinierte Liquid-Logik hinzu, indem du sie Fudge beschreibst.
Kostenlose Testversion starten

Um diese Logik in einer eigenen Section unterzubringen, siehe Eine benutzerdefinierte Section in Shopify erstellen.


Unless – das Gegenteil von if

{% unless %} ist die Kurzschreibweise für “wenn nicht” (if not):

{% unless customer %}
  <a href="/account/login">Log in for member pricing</a>
{% endunless %}

Äquivalent zu {% if customer == blank %}, aber lesbarer.


Assign und capture – Variablen erstellen

assign erstellt eine einfache Variable:

{% assign discount_price = product.price | times: 0.8 %}
{{ discount_price | money }}

capture erstellt eine Variable aus einem Inhaltsblock (kann HTML und Liquid enthalten):

{% capture size_label %}
  {{ product.variants.first.option1 }} / {{ product.variants.first.option2 }}
{% endcapture %}
<span>{{ size_label }}</span>

FAQ

Was ist der Unterschied zwischen Liquid und JavaScript in Shopify?

Liquid läuft serverseitig, wenn Shopify die Seite rendert — bis der Browser das HTML empfängt, ist alles Liquid bereits aufgelöst. JavaScript läuft im Browser, nachdem die Seite geladen wurde. Verwende Liquid für Daten, die zur Renderzeit bekannt sind (Produktinfos, Kunden-Tags, Seitentemplates). Verwende JavaScript für alles, was auf Benutzeraktionen reagieren muss (Warenkorb-Updates, dynamische Filter). Wenn du keines von beiden von Hand schreiben möchtest, beschreibe das gewünschte Verhalten einfach Fudge, dem KI-Operator für Shopify-Shops, und es entwirft die richtige Mischung aus Liquid und JS in deinem Theme für dich zur Vorschau.

Kann ich Liquid innerhalb von JavaScript-Blöcken verwenden?

Innerhalb von <script>-Tags im HTML deiner Section - ja, Liquid wird gerendert, bevor JS läuft. Innerhalb des {% javascript %}-Blocks der Section - nein, dieser Block wird separat gebündelt und Liquid wird dort nicht verarbeitet. Um Liquid-Daten an einen {% javascript %}-Block zu übergeben, gib sie im HTML als data--Attribut aus und lies sie von JS aus.

Wie debugge ich einen Liquid-Fehler, der die Seite kaputt macht?

Öffne die Seite in einem Inkognito-Tab, um den Theme-Cache zu umgehen. Überprüfe die zuletzt bearbeitete Datei auf nicht geschlossene Tags ({% if %} ohne {% endif %}), fehlende Anführungszeichen in Tag-Argumenten oder Tippfehler in Objektnamen. Liquid-Fehler werden normalerweise inline auf der Seite als "Liquid error: ..." ausgegeben. Shopifys Theme Inspector für Chrome hilft dabei, langsames Liquid zu finden.

Kann Liquid rechnen?

Ja, mit Filtern: | plus: 5, | minus: 5, | times: 0.9, | divided_by: 2, | modulo: 3. Es gibt keine eingebaute Expression-Syntax (du kannst nicht direkt {{ 5 + 3 }} schreiben), also verkette Filter oder nutze assign für Zwischenwerte.

Kann ich mit Liquid eine externe API aufrufen?

Nein - Liquid ist reine Template-Logik und hat keine Netzwerk-Primitive. Um Daten von einer externen Quelle abzurufen, verwende JavaScript im Frontend (fetch) oder rufe sie serverseitig in einer Shopify-App ab und speichere das Ergebnis in einem Metafeld, das Liquid lesen kann.

Jacques's signature
Füge benutzerdefinierte Liquid-Logik zu deinem Shopify-Theme hinzu, indem du beschreibst, was du brauchst.

You might also be interested in

Jacques Blom
Jacques Blom
CTO bei Fudge.