Der Warenkorb-Drawer zeigt das Gratisgeschenk oder Bundle zum vollen Preis an
Wenn dein Warenkorb-Drawer ein Gratisgeschenk oder einen gebündelten Artikel zum vollen Preis anzeigt, während die Warenkorbsumme und der Checkout korrekt sind, prüfe, wie der Drawer seine Preise liest und aktualisiert. Ältere Liquid-Preisfelder können automatische Rabatte auslassen, und ein Drawer kann außerdem einen veralteten Warenkorbstand beibehalten. Dieser Artikel erklärt, wie du diese Fälle unterscheidest.
Schnellprüfung: Ist die Summe korrekt?
Bevor du etwas änderst, prüfe, wo der falsche Preis tatsächlich erscheint:
- Wenn der Preis pro Zeile im Drawer falsch aussieht, also ein Gratisgeschenk oder rabattierter Artikel zum vollen Preis angezeigt wird, aber die Warenkorbzwischensumme am unteren Rand des Drawers und die Checkout-Summe korrekt sind, handelt es sich nur um ein Darstellungsproblem. Lies weiter.
- Wenn die Checkout-Summe selbst falsch ist, handelt es sich um ein anderes Problem, zum Beispiel eine Kombination mit einer anderen Rabatt-App oder einen nicht passenden Rabatt. Dieser Artikel behandelt diesen Fall nicht.
Bundlex rendert deinen Warenkorb-Drawer nicht. Der Rabatt wird von einer Shopify-Warenkorbrabattfunktion beim Checkout angewendet, und Bundlex kann die Anzeige des Preises pro Zeile in einem Theme nicht überschreiben.
Warum der Drawer den vollen Preis anzeigt
Bundlex wendet seinen Rabatt über eine Shopify-Warenkorbrabattfunktion an. Diese Funktion weist den Rabatt den Warenkorbzeilen zu, was Shopify als eine Form des automatischen Rabatts behandelt.
Das Problem liegt darin, wie einige Themes jede Warenkorbzeile darstellen. Ältere oder benutzerdefinierte Warenkorb-Drawer zeigen den Preis pro Zeile mithilfe der Liquid-Felder line_item.price und line_item.line_price an. Die Dokumentation von Shopify kennzeichnet diese Felder als veraltet, weil sie automatische Rabatte nicht berücksichtigen. Daher zeigt der Drawer den ursprünglichen, nicht rabattierten Preis an, obwohl Shopify den Rabatt für diese Zeile korrekt gespeichert hat.
Das Ergebnis für Kunden: Jede Zeile im Bundle zeigt denselben vollen Stückpreis, und eine kostenlose Zeile, also ein Gratisgeschenk, kann so aussehen, als würde sie berechnet. Gleichzeitig sind Zwischensumme und Checkout korrekt, weil sie anhand der rabattierten Werte berechnet werden.
Mit /cart.js bestätigen
Du kannst unabhängig von der Anzeige des Drawers nachweisen, dass der Rabatt korrekt angewendet wird:
- Füge das Bundle oder das Angebot mit dem Gratisgeschenk im Onlineshop zum Warenkorb hinzu.
- Öffne im Browser
/cart.jsdesselben Shops, zum Beispiel durch Aufrufen vonhttps://yourstore.com/cart.js. - Suche die betroffene Zeile und prüfe
final_pricesowiefinal_line_price.
Bei einer funktionierenden Gratisgeschenkzeile siehst du etwa final_price: 0 und final_line_price: 0, wobei der Rabatt unter discounts dieser Zeile aufgeführt ist, also der Angebotstitel und der rabattierte Betrag. Prüfe, welche Felder dein Drawer tatsächlich rendert. Die oben beschriebene Abkündigung betrifft Liquid-line_item.price und line_item.line_price. Eine alleinige /cart.js-Antwort gibt keinen Aufschluss darüber, aus welcher Datenquelle der Drawer seine Daten bezieht.
Ergebnisinterpretation:
final_price/final_line_pricegeben den Rabatt korrekt wieder, aber der Drawer zeigt den vollständigen Preis an. Prüfe sowohl die vom Drawer gerenderten Felder als auch, ob er nach Änderungen am Warenkorb aktualisiert wird.final_pricegibt den Rabatt nicht korrekt wieder. Das Problem liegt dann nicht an der Darstellung im Drawer. Prüfe stattdessen die Warenkorbfunktion, zum Beispiel, ob das Bundle korrekt gekennzeichnet wurde, ob das Rabatt-Metafeld aktuell ist oder ob Regeln zur Kundenberechtigung wie B2B oder Kunden-Tags greifen.
Die Lösung: final_price und final_line_price verwenden
Wenn das Liquid-Snippet des Warenkorb-Drawers diese veralteten Felder für den aktuellen Preis verwendet, ersetze sie durch die entsprechenden final_-Felder:
line_item.pricewird zuline_item.final_priceline_item.line_pricewird zuline_item.final_line_price
Die Felder final_ enthalten Rabatte auf Zeilenebene. Wenn dein Drawer JavaScript verwendet, prüfe außerdem, ob er nach Änderungen eine aktuelle Warenkorbantwort oder aktualisierte Theme-Abschnitte rendert. Das Ersetzen eines Preisfelds behebt keinen veralteten Datenstand.
Da der Wert
pricepro Zeile ein statisches Liquid-Attribut ist, kann Bundlex ihn nicht für dich umschreiben. Die Rabattdaten sind bereits infinal_pricevorhanden, das Theme muss sie lediglich auslesen.
Wenn du einen nativen Vergleichspreis verwendest
Wenn deine Varianten außerdem einen Shopify-compare_at_price enthalten, zum Beispiel einen durchgestrichenen Hinweis wie "50% Rabatt", wird dieses Badge vom Theme anhand der Variantendaten gerendert und steht nicht mit dem Bundlex-Rabatt in Zusammenhang. Nach dem Wechsel zu den Feldern final_ gibt der Zeilenpreis den Bundlex-Rabatt wieder, während der durchgestrichene Vergleichspreis weiterhin so angezeigt wird, wie es dein Theme konfiguriert.
Der andere Fall: eine übrig gebliebene Geschenkezeile mit 0 $
Ein verwandtes, aber separates Symptom: Ein Kunde wählt ein Angebot mit Gratisgeschenk und reduziert anschließend die Menge des Hauptartikels unter den Schwellenwert des Angebots. Die Hauptzeile wechselt korrekt in eine niedrigere Stufe, aber eine Gratisgeschenkezeile bleibt im Warenkorb und zeigt 0 $ an.
Der Grund: Wenn die Menge unter den Schwellenwert fällt, beendet die Warenkorbfunktion den Rabatt korrekt und entfernt die Zuweisung. Eine Shopify-Warenkorbfunktion kann jedoch keine Warenkorbzeile entfernen, da ihr keine entsprechende Remove-Operation zur Verfügung steht. Bei einem Gratisgeschenk, das als Katalogvariante mit einem Preis von 0 $ konfiguriert ist, gibt es keinen Preis, zu dem es "zurückkehren" kann. Daher bleibt die nun nicht mehr berechtigte Geschenkezeile einfach mit 0 $ bestehen.
Dafür enthält Bundlex eine Bereinigung auf Widget-Seite, die nach einer Warenkorbänderung ausgeführt wird und die verwaiste Geschenkezeile entfernt. Dabei gelten Bedingungen dafür, wann sie ausgeführt werden kann:
- Nur Gratisgeschenke. Kostenpflichtige Extras werden durch die Bundle-Integrität behandelt, nicht durch diese Bereinigung.
- Unterstützte Wege für Warenkorbänderungen. Wenn ein vollständiges Bundlex-Widget aktiv ist, verarbeitet die Bereinigung sowohl Fetch- als auch XHR-Warenkorbänderungen. Auf Seiten, auf denen nur das Skript zur Geschenke-Bereinigung ohne Widget ausgeführt wird, werden nur Fetch-Änderungen abgefangen. Das Aktualisierungsverhalten des Themes kann weiterhin beeinflussen, was der Drawer anzeigt.
- Die Bereinigung erfolgt nach dem Best-Effort-Prinzip. Wenn ein Schritt fehlschlägt, kann die Geschenkezeile bis zur nächsten Interaktion mit dem Warenkorb sichtbar bleiben.
Nachdem eine Zeile entfernt wurde, löst Bundlex Ereignisse zur Warenkorbaktualisierung aus, damit das Theme neu rendert. Bei Dawn und den kostenlosen Shopify-Themes, die darauf basieren, zeichnet Bundlex außerdem den Warenkorb-Drawer, die Warenkorbseite und die Anzahl am Warenkorb-Icon selbst neu. Es gibt kein einzelnes Ereignis zur Warenkorbaktualisierung, das jedes Shopify-Theme implementiert. Bei anderen Themes, die nicht auf diese Ereignisse reagieren, kann der Drawer daher bis zur nächsten Interaktion veraltet bleiben. Der wichtigste Punkt: Die Warenkorbberechnung ist immer korrekt. Dem Kunden wird die verbleibende Zeile mit 0 $ nicht berechnet, und die Checkout-Summe ist unabhängig davon korrekt, was der Drawer vorübergehend anzeigt.
Zusammenfassung
- Der Drawer zeigt den vollständigen Preis, aber Summe und Checkout sind korrekt: Prüfe veraltete Liquid-Preisfelder oder veraltete Warenkorbdaten.
- Überprüfe dies mit
/cart.js:final_price/final_line_pricegeben den Rabatt korrekt wieder. - Behebe dies im Theme: Ersetze diese Felder durch
final_priceundfinal_line_price. - Eine übrig gebliebene Geschenkezeile mit 0 $ nach dem Reduzieren der Menge ist erwartbar, da Shopify keine Zeilen entfernen kann. Bundlex bereinigt sie in unterstützten Themes, und der Preis ist beim Checkout immer korrekt.
War dieser Artikel hilfreich?
Dein Feedback hilft uns, unsere Dokumentation zu verbessern.