Naar hoofdinhoud gaan
Problemen oplossen

De cart drawer toont het cadeau of de bundel tegen de volledige prijs

Als je cart drawer een cadeau of gebundeld item tegen de volledige prijs toont terwijl het totaal van de winkelwagen en de checkout kloppen, controleer dan hoe de cart drawer de prijzen leest en vernieuwt. Oudere Liquid-prijsvelden kunnen automatische kortingen weglaten en een cart drawer kan ook een verouderde momentopname van de winkelwagen behouden. In dit artikel leggen we uit hoe je deze situaties van elkaar onderscheidt.

Snelle controle: klopt het totaal?

Controleer voordat je iets wijzigt waar de onjuiste prijs daadwerkelijk verschijnt:

  • Als de prijs per regel in de cart drawer onjuist lijkt, bijvoorbeeld de volledige prijs voor een cadeau of afgeprijsd item, maar het subtotaal van de winkelwagen onderaan de cart drawer en het checkouttotaal wel kloppen, gaat het alleen om een weergaveprobleem. Lees verder.
  • Als het checkouttotaal zelf onjuist is, gaat het om een ander probleem, bijvoorbeeld een andere kortingsapp die kortingen stapelt of een korting die niet overeenkomt. Dit artikel behandelt die situatie niet.

Bundlex rendert je cart drawer niet. De korting wordt toegepast door een Shopify-cartkortingsfunctie die tijdens de checkout wordt uitgevoerd. Bundlex kan de prijsweergave per regel van een thema niet herschrijven.

Waarom de drawer de volledige prijs toont

Bundlex past de korting toe via een Shopify-cartkortingsfunctie. Die functie verdeelt de korting over de winkelwagenregels, die Shopify als een vorm van automatische korting behandelt.

Het probleem zit in de manier waarop sommige thema's elke winkelwagenregel weergeven. Oudere of aangepaste cart drawers tonen de regelprijs met de Liquid-velden line_item.price en line_item.line_price. Shopify markeert deze velden in de eigen documentatie als verouderd, omdat ze geen automatische kortingen weerspiegelen. Daardoor toont de drawer de oorspronkelijke prijs zonder korting, ook al heeft Shopify de korting correct aan die regel gekoppeld.

Wat klanten zien: elke regel in de bundel toont dezelfde volledige prijs per eenheid en een gratis regel, oftewel een cadeau, kan eruitzien alsof ervoor wordt betaald. Ondertussen kloppen het subtotaal en de checkout, omdat deze worden berekend op basis van de afgeprijsde waarden.

Bevestig dit met /cart.js

Je kunt onafhankelijk van wat de drawer toont controleren of de korting correct wordt toegepast:

  1. Voeg op de storefront de bundel, of de aanbieding met het gratis cadeau, toe aan de winkelwagen.
  2. Open in de browser /cart.js in dezelfde winkel, bijvoorbeeld door naar https://yourstore.com/cart.js te gaan.
  3. Zoek de betreffende regel en bekijk final_price en final_line_price.

Bij een werkende regel met een gratis cadeau zie je iets als final_price: 0 en final_line_price: 0, met de korting vermeld onder discounts van die regel, de titel van de aanbieding en het kortingsbedrag. Controleer welke velden je cart drawer daadwerkelijk rendert. De hierboven beschreven veroudering geldt voor Liquid's line_item.price en line_item.line_price. Een /cart.js-response op zichzelf geeft niet aan waar de cart drawer zijn gegevens vandaan haalt.

Het resultaat interpreteren:

  • final_price / final_line_price weerspiegelen de korting, maar de cart drawer toont de volledige prijs. Controleer zowel de velden die de cart drawer rendert als of deze wordt vernieuwd nadat de winkelwagen is gewijzigd.
  • final_price weerspiegelt de korting niet. Dan ligt het probleem niet bij de weergave van de cart drawer. Onderzoek in plaats daarvan de cartfunctie, bijvoorbeeld of de bundel correct is getagd, of het kortingsmetaveld actueel is en of voorwaarden voor klantgeschiktheid, zoals B2B of klanttags, van toepassing zijn.

De oplossing: gebruik final_price en final_line_price

Als het Liquid-fragment van de cart drawer deze verouderde velden gebruikt voor de huidige prijs, vervang ze dan door de bijbehorende final_-equivalenten:

  • line_item.price wordt line_item.final_price
  • line_item.line_price wordt line_item.final_line_price

De velden final_ bevatten kortingen op regelniveau. Als je winkelwagenlade JavaScript gebruikt, controleer dan ook of deze na wijzigingen een nieuwe winkelwagenreactie of bijgewerkte themasecties weergeeft. Het vervangen van een prijsveld herstelt geen verouderde momentopname.

Omdat de waarde price per regel een statisch Liquid-attribuut is, kan Bundlex deze niet voor je herschrijven. De kortingsgegevens zijn al aanwezig in final_price; het thema hoeft deze alleen uit te lezen.

Als je een native vergelijkingsprijs gebruikt

Als je varianten ook een Shopify compare_at_price bevatten, bijvoorbeeld een doorgestreepte tekst zoals "50% korting", wordt die badge door het thema weergegeven op basis van de variantgegevens en staat deze los van de Bundlex-korting. Nadat je bent overgeschakeld naar de velden final_, geeft de regelprijs de Bundlex-korting weer, terwijl de doorgestreepte vergelijkingsprijs blijft verschijnen zoals je thema dit configureert.

Het andere geval: een achtergebleven cadeau-regel van $0

Een verwant maar afzonderlijk probleem: een klant kiest een aanbieding met een gratis cadeau en verlaagt daarna de hoeveelheid van het hoofdartikel tot onder de drempel van de aanbieding. De hoofdregel gaat correct naar een lagere staffel, maar een regel voor het gratis cadeau blijft in de winkelwagen staan met $0.

Dit is de reden. Wanneer de hoeveelheid onder de drempel komt, stopt de winkelwagenfunctie correct met het toepassen van de korting en verwijdert deze de toewijzing. Maar een Shopify-winkelwagenfunctie kan geen winkelwagenregel verwijderen (er is geen verwijderbewerking voor beschikbaar). Voor een gratis cadeau dat is ingesteld als een catalogusvariant van $0, is er geen prijs om naar terug te keren. Daarom blijft de cadeau-regel waarvoor niet langer aan de voorwaarden wordt voldaan gewoon staan op $0.

Om dit af te handelen bevat Bundlex een opschoning aan de widgetzijde die na een winkelwagenwijziging wordt uitgevoerd en de verweesde cadeau-regel verwijdert. Er gelden voorwaarden voor wanneer deze kan worden uitgevoerd:

  • Alleen gratis cadeaus. Betaalde extra's worden afgehandeld door de bundelintegriteit, niet door deze opschoning.
  • Ondersteunde paden voor winkelwagenwijzigingen. Wanneer een volledige Bundlex-widget actief is, verwerkt de opschoning zowel fetch- als XHR-wijzigingen aan de winkelwagen. Op pagina's waarop alleen het script voor het opschonen van cadeaus draait zonder widget, worden alleen fetch-wijzigingen onderschept. Het vernieuwingsgedrag van het thema kan nog steeds bepalen wat de lade weergeeft.
  • De opschoning wordt zo goed mogelijk uitgevoerd. Als een stap mislukt, kan de cadeau-regel visueel blijven staan tot de volgende interactie met de winkelwagen.

Nadat Bundlex een regel heeft verwijderd, verstuurt het cart-refresh-gebeurtenissen om het thema aan te sporen opnieuw te renderen. In Dawn en de gratis Shopify-thema's die daarop zijn gebaseerd, tekent Bundlex ook de winkelwagenlade, de winkelwagenpagina en de teller van het winkelwagenpictogram opnieuw. Er is geen enkele cart-updated-gebeurtenis die door elk Shopify-thema wordt geïmplementeerd. In andere thema's die hier niet naar luisteren, kan de lade verouderde gegevens blijven tonen tot de volgende interactie. Het belangrijkste punt: de berekening van de winkelwagen is altijd correct. De klant betaalt niet voor de achtergebleven regel van $0 en het totaal bij het afrekenen is correct, ongeacht wat de lade tijdelijk weergeeft.

Samenvatting

  • De lade toont de volledige prijs, maar het totaal en het afrekenen zijn correct: controleer op verouderde Liquid-prijsvelden of verouderde winkelwagengegevens.
  • Controleer met /cart.js: final_price / final_line_price geven de korting weer.
  • Los dit op in het thema: wijzig die velden naar final_price en final_line_price.
  • Een achtergebleven cadeau-regel van $0 na het verlagen van de hoeveelheid is te verwachten, omdat Shopify regels niet kan verwijderen. Bundlex ruimt deze op in ondersteunde thema's en de prijs is bij het afrekenen altijd correct.

Was dit artikel nuttig?

Met je feedback kunnen we onze documentatie verbeteren.

Bedankt, we blijven dit artikel verbeteren.

Wil je met ons team chatten? Heb je nog een vraag?

Nog hulp nodig?

Ons team is slechts één klik verwijderd. Stuur ons een bericht en we nemen contact met je op.

We gebruiken enkele cookies om deze site goed te laten werken, te meten hoe de site wordt gebruikt en onze chatwidget te activeren wanneer je deze opent. Bekijk ons cookiebeleid.