Zum Inhalt springen
Shopsysteme & Software

Shopify Liquid

Liquid ist die von Shopify entwickelte, quelloffene Template-Sprache, in der alle Shopify-Themes geschrieben sind. Sie verbindet HTML mit Ausgabelogik über Objects, Tags und Filter und steuert, wie Produkt-, Kollektions- und Checkout-Daten im Frontend dargestellt werden.

Stand: Juli 2026

Was ist Liquid und wofür wird es benutzt?

Liquid steuert in jedem Shopify-Theme, wie aus Rohdaten — Produkte, Kollektionen, Kundendaten, Warenkorb — fertiges HTML wird. Die Sprache wurde von Shopify selbst entwickelt und ist quelloffen, wird aber inzwischen auch außerhalb von Shopify eingesetzt (etwa bei Jekyll). Innerhalb von Shopify ist Liquid die einzige Möglichkeit, serverseitig auf Shop-Daten zuzugreifen und sie im Theme auszugeben.

Liquid-Code steht in .liquid-Dateien und mischt normales HTML mit Liquid-Syntax in zwei Formen:

  • {{ }} für Ausgabe — z. B. {{ product.title }} gibt den Produktnamen aus
  • {% %} für Logik — z. B. {% if product.available %} für Bedingungen, Schleifen, Zuweisungen

Die drei Bausteine: Objects, Tags, Filter

BausteinAufgabeBeispiel
ObjectsDaten aus dem Shopproduct, collection, cart, customer
TagsProgrammlogik{% for %}, {% if %}, {% assign %}, {% section %}
FilterDaten umformen/formatieren{{ price | money }}, {{ title | upcase }}

Objects sind vordefinierte Datenstrukturen, die Shopify bei jedem Seitenaufruf bereitstellt — je nach Seitentyp (Produktseite, Kollektionsseite, Checkout) stehen unterschiedliche Objects zur Verfügung. Tags steuern den Kontrollfluss und binden wiederverwendbare Theme-Bausteine wie Sections und Snippets ein. Filter werden mit dem Pipe-Symbol | an Ausgaben angehängt und formatieren Werte, etwa Preise in Währungsformat oder Bilder in bestimmten Auflösungen. Für mehrzeilige Logik ohne wiederholte {% %}-Klammern gibt es zusätzlich das {% liquid %}-Tag, das mehrere Anweisungen block-artig zusammenfasst und Templates mit viel Bedingungslogik deutlich lesbarer macht.

Snippets, Sections und Blocks: die Bausteine in der Praxis

Wer an einem Shopify-Theme arbeitet, stößt schnell auf drei wiederkehrende Dateitypen, die sich leicht verwechseln lassen, aber unterschiedliche Aufgaben haben:

BausteintypAufgabeIm Theme-Editor sichtbar?Typisches Beispiel
SectionSeitenabschnitt mit eigenem Einstellungs-SchemaJa, per Drag-and-Drop anordenbarHero-Banner, Produkt-Slider, Footer
BlockWiederholbares Element innerhalb einer SectionJa, innerhalb der Section konfigurierbarBewertungssternchen, Icon-Spalte, Slide
SnippetReiner Liquid-Code-Baustein ohne Editor-OberflächeNeinprice.liquid, product-card.liquid, icon-cart.liquid

Snippets sind dabei die Arbeitspferde für wiederkehrende Ausgabelogik: Ein price.liquid-Snippet formatiert einmal zentral, wie ein Preis inklusive Streichpreis dargestellt wird, und wird von jeder Stelle im Theme eingebunden, die einen Preis zeigt — Produktkarte, Warenkorb, Schnellansicht. Ändert sich die Preisdarstellung, reicht eine Änderung an einer Stelle statt an Dutzenden. Eingebunden werden Snippets über das render-Tag, das im Gegensatz zum älteren, mittlerweile unüblichen include-Tag keinen automatischen Zugriff auf den umgebenden Variablen-Kontext hat — Werte müssen explizit übergeben werden. Das macht Snippets kapselbarer und Fehler leichter lokalisierbar, kostet aber etwas mehr Schreibaufwand beim Einbinden.

Wie passt man ein Shopify-Theme mit Liquid an?

Moderne Shopify-Themes (Online Store 2.0) sind in Sections und Blocks gegliedert — wiederverwendbare, im Theme-Editor konfigurierbare Bausteine, die selbst wieder Liquid-Code enthalten. Das erlaubt Anpassungen auf zwei Ebenen:

  1. Ohne Code: Sections per Drag-and-Drop im Theme-Editor anordnen, Einstellungen über Schemas (JSON-Konfiguration am Ende jeder Section-Datei) ändern.
  2. Mit Code: eigene Sections, Snippets oder Custom-Liquid-Blocks schreiben, um Layouts oder Logik umzusetzen, die der Theme-Editor nicht abbildet.

Für Produktdaten, die über Standardfelder hinausgehen — etwa technische Spezifikationen oder GPSR-Pflichtangaben — nutzt man Metafelder, die in Liquid über product.metafields ausgelesen werden. Das ist konzeptionell vergleichbar mit dem, wie in JTL-Shop-Templates wie NOVA zusätzliche Wawi-Felder eingebunden werden, nur mit anderer Syntax.

Wann reicht der Theme-Editor, wann braucht es Custom-Code? Als Faustregel: Solange sich eine Anforderung mit vorhandenen Sections, Blocks und Schema-Einstellungen abbilden lässt — neue Reihenfolge, andere Farben, zusätzliche Bildspalte —, bleibt man ohne Code im Theme-Editor. Sobald eine neue Datenquelle (eigene Metafelder-Struktur), eine neue Layout-Logik, die es im Theme noch nicht gibt, oder eine Verknüpfung mehrerer Objects auf ungewöhnliche Weise gebraucht wird, führt kein Weg an eigenem Liquid-Code vorbei. Der Übergang lohnt sich außerdem als bewusste Entscheidung, nicht als Zufall: Wer regelmäßig Custom-Liquid-Blöcke im Theme-Editor „zwischenparkt", verliert schnell den Überblick, was wo herkommt.

Grenzen von Liquid

Liquid ist bewusst eingeschränkt: keine externen API-Calls, keine komplexe serverseitige Programmlogik, kein direkter Datenbankzugriff. Das ist Absicht — Shopify trennt Theme-Rendering strikt von Backend-Logik, die über Apps oder die Storefront-API läuft. In der Praxis gibt es dafür zwei etablierte Umwege: den App Proxy, der einen Pfad der eigenen Shop-Domain transparent an das Backend einer App weiterleitet, sodass sich externe Logik anfühlt, als käme sie direkt vom Shop — und clientseitiges JavaScript, das nach dem Laden der Seite per Ajax zusätzliche Daten nachlädt. Beide Wege umgehen nicht die Beschränkung von Liquid, sondern verlagern die eigentliche Logik bewusst dorthin, wo sie hingehört: ins Backend einer App statt ins Theme. Wer deutlich mehr Kontrolle über Rendering und Datenflüsse braucht, landet oft bei einer Headless-Commerce-Architektur mit eigenem Frontend statt klassischem Liquid-Theme.

Liquid im Vergleich zu anderen Shop-Templatesprachen

Wer aus dem JTL-Umfeld kommt, kennt ein ähnliches Prinzip aus dem NOVA-Template: Auch dort wird Ausgabelogik von der eigentlichen Geschäftslogik getrennt, allerdings über Smarty statt Liquid. Der grundlegende Unterschied liegt im Ökosystem — Liquid ist untrennbar mit Shopifys Theme-Store, Apps und Storefront-API verzahnt, während JTL-Templates direkt auf die Wawi-Datenbank aufsetzen. Für Entwicklerteams, die beide Systeme betreuen, bedeutet das: unterschiedliche Syntax, aber ähnliche Best Practices — Kernfunktionen nicht anfassen, eigene Erweiterungen sauber kapseln, Updates testen statt live zu riskieren.

Performance-Aspekte von Liquid-Themes

Da Liquid serverseitig gerendert wird, bevor die Seite an den Browser geht, hat die Struktur des Codes direkten Einfluss auf die Ladezeit. Verschachtelte Schleifen über Collections mit hunderten Produkten, unnötig viele Snippet-Includes pro Seite oder ungefilterte Bildgrößen sind die häufigsten Ursachen für langsame Themes. Shopify liefert mit den Theme-Store-Vorgaben und dem integrierten Performance-Score im Theme-Editor eine erste Orientierung, ersetzt aber keine gezielte Code-Optimierung bei komplexeren Themes.

Typische Fehler bei der Liquid-Entwicklung

  1. Direkte Änderungen an Theme-Store-Dateien statt eigenen Sections — Updates des Basis-Themes überschreiben dann die eigene Arbeit.
  2. Zu viel Logik in Liquid statt in Metafeldern oder Apps abgebildet — macht Templates unübersichtlich und schwer wartbar.
  3. Fehlendes Caching-Bewusstsein — aufwendige Schleifen über große Produktlisten ({% for %} über hunderte Varianten) verlangsamen das Rendering spürbar.
  4. Metafelder ohne einheitliches Namensschema — wächst das Sortiment, wird die Zuordnung zwischen Liquid-Code und Metafeld-Namen schnell unübersichtlich, besonders bei großen Katalogen ohne zentrales PIM-System.
  5. Theme-Änderungen ohne Testtheme — Liquid-Fehler live im Produktivtheme zu debuggen, führt schnell zu sichtbaren Ausfällen im Live-Shop. Ein separates Entwicklungs-Theme als Staging-Umgebung kostet nichts extra und fängt genau solche Fehler vor dem Go-Live ab.

Liquid-Entwicklung als Teil der Shopify-Umsetzung

Saubere Liquid-Architektur entscheidet über Ladezeit, Wartbarkeit und wie einfach sich der Shop später erweitern lässt. Wir entwickeln individuelle Shopify-Themes und Section-Bibliotheken als Shopify Agentur und beraten auch zur grundsätzlichen Frage, ob ein klassisches Shopify-Theme oder ein Headless-Setup die bessere Basis ist.

Häufige Fragen zu Shopify Liquid

Muss ich Liquid lernen, um meinen Shopify-Shop anzupassen?

Für einfache Anpassungen (Farben, Logos, Textbausteine) reicht der Theme-Editor ohne Code. Sobald es um individuelle Layouts, neue Sections oder Logik geht, führt an Liquid-Kenntnissen oder einer Entwicklungsagentur kein Weg vorbei.

Ist Liquid dasselbe wie JavaScript?

Nein. Liquid ist eine serverseitige Template-Sprache, die auf Shopifys Servern gerendert wird, bevor die Seite an den Browser geht. JavaScript läuft zusätzlich im Browser für Interaktivität — beide ergänzen sich, sind aber technisch komplett getrennt.

Kann ich mit Liquid auf externe APIs zugreifen?

Nein, Liquid kann selbst keine externen HTTP-Requests ausführen. Für externe Datenquellen braucht es entweder Shopify Apps mit eigenem Backend, App-Blocks oder eine headless Architektur mit der Storefront-API.

Was passiert mit Liquid-Code bei einem Theme-Update?

Wird ein Theme über den Shopify Theme Store aktualisiert, können eigene Liquid-Anpassungen überschrieben werden, wenn sie direkt in Kern-Dateien statt in eigenen Sections oder Snippets vorgenommen wurden. Sauber getrennte, eigene Dateien überstehen Updates in der Regel unbeschadet.

Was ist der Unterschied zwischen einer Section und einem Snippet?

Eine Section ist ein im Theme-Editor konfigurierbarer Baustein mit eigenem JSON-Schema für Einstellungen, ein Snippet ist reiner wiederverwendbarer Liquid-Code ohne eigene Editor-Oberfläche. Sections strukturieren die Seite und lassen sich per Drag-and-Drop anordnen, Snippets kapseln wiederkehrende Logik und werden per render-Tag eingebunden.

Wie kommen externe Daten trotzdem in ein Liquid-Theme?

Meist über eine Shopify App mit eigenem Backend, die entweder Metafelder befüllt, die Liquid dann ganz normal ausliest, oder per App Proxy beziehungsweise clientseitigem JavaScript Daten nachlädt. Liquid selbst führt dabei keinen externen Aufruf aus, es zeigt nur das bereits vorliegende Ergebnis an.

Das richtige Shopsystem?

Wir richten JTL und Shopify seit Jahren ein — und sagen Ihnen ehrlich, was zu Ihrem Geschäft passt.

Kostenloses Erstgespräch