DIGITALHAUS LAB / SHOPIFY
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.
SHOPIFY / VERSANDHINWEIS
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.
2. Ergebnis in der Live-Vorschau prüfen
BEISPIEL-SHOP / WARENKORB
Die Vorschau ist eine Simulation. Der generierte Code liest den echten Warenkorb beim Aufruf und nach typischen AJAX-Aktionen; er ändert keine Versandtarife.
EINBAU / SHOPIFY THEME
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:
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.