Shopify Liquid Generator.

Erstelle einen Versandhinweis für dein Shopify-Theme. Stelle den Mindestbestellwert ein, teste eine Vorschau und kopiere den fertigen Liquid-Code. Kostenlos und ohne Registrierung.

Keine AnmeldungKeine externen SkripteDirekt im Browser

In vier Schritten zum Shopify-Versandhinweis.

Erstelle einen Versandhinweis, der zu deinem Shopify-Theme passt. Passe die Einstellungen an, prüfe die Vorschau und kopiere den fertigen Code.

1. Versandhinweis gestalten

LIVE-VORSCHAU

Noch 18,00 € bis zum kostenlosen Versand.

Dein Versandhinweis

Versandhinweis mit Mindestbestellwert Für einen Mindestbestellwert mit automatischer Warenkorbaktualisierung.

Regler: 1 bis 500 €. Für Centbeträge oder höhere Werte nutze das Zahlenfeld. Die echten Versandregeln richtest du separat in Shopify ein.

Wähle eine Vorlage oder passe die Farben einzeln an.

1 px

0 Pixel bedeutet: kein Rahmen.

0 px

0 px = eckig, 48 px = stark abgerundet. Die Live-Vorschau zeigt den Wert sofort.

Die Schriftfamilie wird immer vom Theme übernommen.

Standardmäßig aus. Nur bei Aktivierung wird digitalhaus-kunze.de als HTML-Kommentar im Quelltext des Shops ergänzt. Kein sichtbarer Link.

Der Schieberegler verändert nur die Vorschau, nicht den Shopify-Code. Die Vorschau nutzt Euro als Beispiel.

2. Ergebnis in der Live-Vorschau prüfen

BEISPIEL-SHOP / WARENKORB

Noch 18,00 € bis zum kostenlosen Versand.

Die Vorschau ist eine Simulation. Der generierte Code liest den echten Warenkorb beim Aufruf und nach typischen AJAX-Aktionen; er ändert keine Versandtarife.

3. So baust du den Hinweis ein

Erst den Einbauort vorbereiten, dann den vollständigen Code kopieren. Bei einem Snippet folgt der Render-Tag ganz zum Schluss.

Sichere zuerst dein Shopify-Theme: Onlineshop → Themes → Duplizieren. Wähle danach eine der beiden Einbauarten:

Option A: Custom Liquid

Öffne den Theme-Editor und füge am gewünschten Einbauort einen Block Custom Liquid hinzu. In Schritt 4 kopierst du den Code und fügst ihn direkt in diesen Block ein. Speichern – fertig. Ein eigenes Snippet ist dafür nicht nötig.

Option B: Snippet-Datei

Öffne Onlineshop → Themes → … → Code bearbeiten. Lege im Ordner snippets ein neues Snippet mit dem Namen dhk-shipping-note an. Die Datei heißt dann dhk-shipping-note.liquid.

Noch keinen Render-Tag einfügen. Kopiere zuerst in Schritt 4 den gesamten generierten Code in diese Datei und speichere sie. Erst danach fügst du den Render-Tag am gewünschten Einbauort ein.

Technische Hinweise und typische Fehler

Warenkorb aktualisiert sich ohne Neuladen?

Das generierte Snippet fragt nach typischen Warenkorbaktionen die Shopify Ajax Cart API ab und aktualisiert den Hinweis. Es reagiert auf Klicks, Mengenänderungen und verbreitete Cart-Events. Nicht alle Themes verwenden die gleichen Steuerelemente oder Ereignisse. Teste besonders den Cart Drawer und die Rückkehr von einem leeren Warenkorb. Bei speziellen Themes kann eine zusätzliche Integration nötig sein.

Mehrere Währungen im Shop?

cart.total_price verwendet die aktuelle Kundenwährung. Der feste Zahlenwert der Schwelle bleibt dagegen gleich. Teste deshalb jeden Markt oder verwende für unterschiedliche Währungen eine angepasste Lösung.

Rabatte oder Ausnahmen beim Versand?

Der angezeigte Warenkorbwert berücksichtigt Artikelrabatte. Versandprofile, Lieferländer, nicht versandfähige Artikel und weitere Bedingungen der Versandberechnung werden durch dieses Snippet nicht geprüft. Stimme die Anzeige mit den tatsächlichen Shopify-Versandtarifen ab.

Der Generator erstellt nur einen Hinweis. Er richtet keine Versandtarife ein und garantiert keinen kostenlosen Versand. Der automatische AJAX-Abgleich benötigt JavaScript und ist nicht für jedes Theme garantiert. Prüfe Beträge und Darstellung im Testtheme.

Technische Grundlage: Shopify Liquid cart und Shopify Money-Filter.

4. Fertigen Liquid-Code kopieren

Kopiere den vollständigen Code und füge ihn in den vorbereiteten Custom-Liquid-Block oder in die Datei snippets/dhk-shipping-note.liquid ein. Speichere danach.

Gesamten generierten Code anzeigen
{% comment %}
  Versandtarife bitte separat in Shopify einrichten. JavaScript für AJAX-Warenkorbänderungen erforderlich.
  Bei mehreren Währungen die Schwelle je Währung prüfen.
{% endcomment %}
{%- assign dhk_free_shipping_limit = 5000 -%}
<div class="dhk-shipping-note" data-dhk-shipping-note data-limit="5000" role="status" aria-live="polite"{% if cart.item_count == 0 %} hidden{% endif %}>
  {%- if cart.item_count > 0 -%}
    {%- if cart.total_price >= dhk_free_shipping_limit -%}
      Kostenloser Versand erreicht!
    {%- else -%}
      Noch {{ dhk_free_shipping_limit | minus: cart.total_price | money }} bis zum kostenlosen Versand.
    {%- endif -%}
  {%- endif -%}
</div>
<style>
  .dhk-shipping-note {
    display: block;
    padding: 14px 18px;
    border: 1px solid #56605c;
    border-radius: 0px;
    background: #161919;
    color: #ffffff;
    font: inherit;
  }
  .dhk-shipping-note[hidden] { display: none !important; }
</style>
<script>
(function () {
  if (window.__dhkShippingNoteReady) return;
  window.__dhkShippingNoteReady = true;

  var timers = [];
  var latestRequest = 0;

  function updateFromCart(cart) {
    if (!cart || !Number.isFinite(cart.total_price)) return;
    var currency = cart.currency || (window.Shopify && window.Shopify.currency && window.Shopify.currency.active) || 'EUR';
    var language = document.documentElement.lang || navigator.language || 'de-DE';
    var money;
    try {
      money = new Intl.NumberFormat(language, { style: 'currency', currency: currency });
    } catch (error) {
      money = new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' });
    }
    document.querySelectorAll('[data-dhk-shipping-note]').forEach(function (note) {
      var limit = Number(note.getAttribute('data-limit'));
      if (!Number.isFinite(limit) || limit <= 0) return;
      if (!cart.item_count) {
        note.hidden = true;
        note.textContent = '';
        return;
      }
      note.hidden = false;
      note.textContent = cart.total_price >= limit
        ? 'Kostenloser Versand erreicht!'
        : 'Noch ' + money.format((limit - cart.total_price) / 100) + ' bis zum kostenlosen Versand.';
    });
  }

  function refresh() {
    var requestNumber = ++latestRequest;
    var root = (window.Shopify && window.Shopify.routes && window.Shopify.routes.root) || '/';
    fetch(root + 'cart.js', { credentials: 'same-origin', cache: 'no-store' })
      .then(function (response) {
        if (!response.ok) throw new Error('Warenkorb nicht erreichbar');
        return response.json();
      })
      .then(function (cart) {
        if (requestNumber === latestRequest) updateFromCart(cart);
      })
      .catch(function () {
        // Bei Netzwerkfehlern bleibt der letzte serverseitig gerenderte Stand erhalten.
      });
  }

  function schedule(delays) {
    timers.forEach(clearTimeout);
    timers = delays.map(function (delay) { return setTimeout(refresh, delay); });
  }

  function cartArea(element) {
    return element.closest('cart-drawer, cart-items, form[action*="/cart"], [class*="cart-drawer"], [class*="cartDrawer"], [id*="CartDrawer"], [class*="mini-cart"], [class*="minicart"], [class*="cart__"], [class*="cart-"], [id="cart"], [id="Cart"]');
  }

  document.addEventListener('click', function (event) {
    if (!(event.target instanceof Element)) return;
    var control = event.target.closest('button, a');
    if (!control) return;
    var productForm = control.closest('form[action*="/cart/add"]');
    if (cartArea(control) || productForm || control.matches('[data-add-to-cart], [name="add"]')) {
      schedule([350, 1150]);
    }
  }, true);

  document.addEventListener('change', function (event) {
    if (!(event.target instanceof Element)) return;
    if (cartArea(event.target) || event.target.matches('[name="updates[]"], [data-ajax-cart-quantity-input]')) {
      schedule([250, 1000]);
    }
  }, true);

  document.addEventListener('submit', function (event) {
    if (!(event.target instanceof Element)) return;
    if (event.target.matches('form[action*="/cart/add"], form[action*="/cart"]')) {
      schedule([400, 1200]);
    }
  }, true);

  ['cart:updated', 'cart:change', 'cart:refresh', 'cart:added', 'cart:rendered', 'ajaxProduct:added', 'theme:cart:change'].forEach(function (eventName) {
    document.addEventListener(eventName, function () { schedule([100, 600]); });
  });
  window.addEventListener('pageshow', refresh);
  refresh();
})();
</script>

Nur bei der Snippet-Variante: Jetzt den Render-Tag einfügen

Nachdem du den Liquid-Code in dhk-shipping-note.liquid eingefügt und die Datei gespeichert hast, setze den folgenden Tag am gewünschten Einbauort im Theme ein. Zum Beispiel in einem passenden Section- oder Warenkorb-Template:

{% render 'dhk-shipping-note' %}

Für Custom Liquid ist der Render-Tag nicht erforderlich. Im Cart Drawer muss die Einbaustelle je nach Theme angepasst werden.

Zum Schluss testen: Artikel zum Warenkorb hinzufügen, Mengen ohne Neuladen ändern und die Versandgrenze prüfen. Versandprofile, Länder, Rabatte und Währungen separat in Shopify kontrollieren.

KOSTENLOS & OHNE ANMELDUNG

Hilfreich für deinen Shop?

Teile dieses kostenlose Tool oder empfehle Digitalhaus Kunze weiter. Freiwillig und ohne Branding in deinem Shop.

Du möchtest dein Shopify-Theme individuell erweitern?

Digitalhaus Kunze unterstützt dich bei Liquid, Theme-Anpassungen und Performance.

Shopify-Leistungen ansehen

DIGITALHAUS / REGIONEN

In deiner Region aktiv.

Entdecke die verfügbaren regionalen Leistungsseiten. Betreut aus Wettin-Löbejün im Saalekreis.

Rhein-Neckar

Auch im Umfeld: Heidelberg · Ludwigshafen am Rhein · Schwetzingen · Viernheim

Halle & Saalekreis

Auch im Umfeld: Bad Dürrenberg · Landsberg · Leuna · Petersberg · Salzatal · Schkopau · Wettin-Löbejün

Leipzig & Umgebung

Auch im Umfeld: Delitzsch · Markkleeberg · Markranstädt · Schkeuditz · Taucha

Salzlandkreis

Auch im Umfeld: Alsleben (Saale) · Arnstein · Barby · Bördeland · Calbe (Saale) · Güsten · Ilberstedt · Könnern · Nienburg (Saale) · Seeland

Anhalt-Bitterfeld

Auch im Umfeld: Aken (Elbe) · Muldestausee · Osternienburger Land · Raguhn-Jeßnitz · Sandersdorf-Brehna · Südliches Anhalt · Zörbig

Magdeburg & Umgebung

Auch im Umfeld: Biederitz · Sülzetal · Wolmirstedt

Dessau-Roßlau & Umgebung

Auch im Umfeld: Aken (Elbe) · Coswig (Anhalt) · Oranienbaum-Wörlitz

Mansfeld-Südharz

Auch im Umfeld: Gerbstedt · Goldene Aue · Großörner · Klostermansfeld · Mittelhausen · Niederröblingen · Oberröblingen · Siebigerode · Vatterode · Walbeck · Wettelrode · Wolferstedt

Rhein-Main-Gebiet

Auch im Umfeld: Aschaffenburg · Bruchköbel · Budenheim · Bürgel · Dreieich · Flörsheim am Main · Friedrichsdorf · Griesheim · Groß-Gerau · Hofheim am Taunus · Ingelheim am Rhein · Kaiserlei · Langen (Hessen) · Maintal · Ober-Eschbach · Oberursel (Taunus) · Pfungstadt · Raunheim · Schwalbach am Taunus · Sulzbach (Taunus) · Taunusstein · Weiterstadt

Thüringen

Auch im Umfeld: Apolda · Arnstadt · Gotha · Rudolstadt · Stadtroda · Weimar

Sachsen

Auch im Umfeld: Freiberg · Freital · Mittweida · Pirna · Radebeul · Zwickau

Harz

Auch im Umfeld: Allrode · Bad Suderode · Ballenstedt · Derenburg · Drei Annen Hohne · Friedrichsbrunn · Gernrode · Heimburg · Hüttenrode · Huy · Ilsenburg · Langenstein · Osterwieck · Schierke · Treseburg