Szuflada koszyka pokazuje prezent lub zestaw w pełnej cenie
Jeśli szuflada koszyka pokazuje prezent lub produkt z zestawu w pełnej cenie, podczas gdy suma koszyka i realizacja zakupu są poprawne, sprawdź sposób odczytywania i odświeżania cen przez szufladę. Starsze pola cenowe Liquid mogą pomijać automatyczne rabaty, a szuflada może również zachowywać nieaktualny obraz koszyka. Ten artykuł wyjaśnia, jak rozróżnić te przypadki.
Szybkie sprawdzenie: czy suma jest poprawna?
Zanim cokolwiek zmienisz, potwierdź, gdzie faktycznie pojawia się nieprawidłowa cena:
- Jeśli cena za pojedynczą pozycję w szufladzie wygląda nieprawidłowo, na przykład prezent lub przeceniony produkt ma pełną cenę, ale suma częściowa koszyka na dole szuflady i suma podczas realizacji zakupu są poprawne, jest to wyłącznie problem wyświetlania. Czytaj dalej.
- Jeśli sama suma podczas realizacji zakupu jest nieprawidłowa, jest to inny problem, na przykład nakładanie się innej aplikacji rabatowej lub niedopasowanie rabatu. Ten artykuł nie obejmuje tego przypadku.
Bundlex nie renderuje szuflady koszyka. Rabat jest stosowany przez funkcję rabatową koszyka Shopify uruchamianą podczas realizacji zakupu, a Bundlex nie może przepisać wyświetlania ceny pojedynczej pozycji w motywie.
Dlaczego szuflada pokazuje pełną cenę
Bundlex stosuje rabat za pośrednictwem funkcji rabatowej koszyka Shopify. Funkcja ta przydziela rabat do pozycji koszyka, a Shopify traktuje go jako rodzaj automatycznego rabatu.
Problem wynika ze sposobu renderowania poszczególnych pozycji koszyka przez niektóre motywy. Starsze lub niestandardowe szuflady koszyka wyświetlają cenę pozycji za pomocą pól Liquid line_item.price i line_item.line_price. Dokumentacja Shopify oznacza te pola jako przestarzałe, ponieważ nie uwzględniają automatycznych rabatów. Dlatego szuflada wyświetla pierwotną cenę bez rabatu, mimo że Shopify prawidłowo zapisał rabat przy tej pozycji.
Efekt widoczny dla klientów: każda pozycja zestawu pokazuje tę samą pełną cenę jednostkową, a bezpłatna pozycja, czyli prezent, może wyglądać tak, jakby była płatna. Tymczasem suma częściowa i realizacja zakupu są poprawne, ponieważ są obliczane na podstawie wartości po rabacie.
Potwierdź to za pomocą /cart.js
Możesz potwierdzić, że rabat jest stosowany prawidłowo, niezależnie od tego, co pokazuje szuflada:
- W sklepie dodaj zestaw lub ofertę z darmowym prezentem do koszyka.
- W przeglądarce otwórz
/cart.jsw tym samym sklepie, na przykład przejdź dohttps://yourstore.com/cart.js. - Znajdź daną pozycję i sprawdź
final_priceorazfinal_line_price.
W przypadku prawidłowo działającej pozycji z darmowym prezentem zobaczysz coś w rodzaju final_price: 0 i final_line_price: 0, a rabat będzie wymieniony w polu discounts tej pozycji, czyli tytule oferty i kwocie rabatu. Sprawdź, które pola faktycznie renderuje Twoja szuflada. Opisana powyżej przestarzałość dotyczy pól Liquid line_item.price i line_item.line_price. Sama odpowiedź /cart.js nie wskazuje źródła danych szuflady.
Interpretacja wyniku:
final_price/final_line_priceuwzględniają rabat, ale szuflada pokazuje pełną cenę. Sprawdź zarówno pola renderowane przez szufladę, jak i to, czy odświeża się po zmianie koszyka.final_pricenie uwzględnia rabatu. W takim przypadku problem nie dotyczy wyświetlania szuflady. Sprawdź działanie funkcji koszyka, na przykład czy zestaw został prawidłowo oznaczony, czy metapole rabatu jest aktualne lub czy obowiązują reguły kwalifikacji klientów, takie jak B2B lub tagi klientów.
Rozwiązanie: użyj final_price i final_line_price
Jeśli fragment Liquid szuflady koszyka używa tych przestarzałych pól do wyświetlania bieżącej ceny, zastąp je ich odpowiednikami final_:
line_item.pricezmienia się naline_item.final_priceline_item.line_pricezmienia się naline_item.final_line_price
Pola final_ zawierają rabaty na poziomie pozycji. Jeśli Twój panel koszyka korzysta z JavaScriptu, sprawdź również, czy po zmianach renderuje aktualną odpowiedź koszyka lub zaktualizowane sekcje motywu. Zastąpienie pola ceny nie naprawi nieaktualnego zrzutu danych.
Ponieważ wartość
pricedla pojedynczej pozycji jest statycznym atrybutem Liquid, Bundlex nie może jej za Ciebie przepisać. Dane rabatu są już dostępne wfinal_price. Motyw musi je tylko odczytać.
Jeśli używasz natywnej ceny przekreślonej
Jeśli Twoje warianty mają również Shopify compare_at_price (przekreślenie, takie jak „50% zniżki”), ta plakietka jest renderowana przez motyw na podstawie danych wariantu i nie ma związku z rabatem Bundlex. Po przełączeniu na pola final_ cena pozycji będzie uwzględniać rabat Bundlex, a przekreślona cena porównawcza będzie nadal wyświetlana zgodnie z konfiguracją motywu.
Drugi przypadek: pozostała pozycja prezentu za 0 USD
Powiązany, ale odrębny objaw: klient wybiera ofertę zawierającą darmowy prezent, a następnie zmniejsza ilość głównego produktu poniżej progu oferty. Główna pozycja prawidłowo przechodzi na niższy poziom, ale pozycja darmowego prezentu pozostaje w koszyku i wyświetla 0 USD.
Oto dlaczego. Gdy ilość spada poniżej progu, funkcja koszyka prawidłowo przestaje naliczać rabat i usuwa alokację. Jednak funkcja koszyka Shopify nie może usunąć pozycji z koszyka (nie ma dostępnej operacji usuwania). W przypadku darmowego prezentu skonfigurowanego jako wariant katalogowy za 0 USD nie ma ceny, do której można by „powrócić”, więc niespełniająca już warunków pozycja prezentu po prostu pozostaje w koszyku za 0 USD.
Aby temu zaradzić, Bundlex zawiera mechanizm czyszczenia po stronie widgetu, który uruchamia się po zmianie koszyka i usuwa osieroconą pozycję prezentu. Jego działanie zależy od kilku warunków:
- Tylko darmowe prezenty. Płatne dodatki są obsługiwane przez integralność zestawu, a nie przez ten mechanizm czyszczenia.
- Obsługiwane ścieżki zmian koszyka. Gdy aktywny jest pełny widget Bundlex, mechanizm czyszczenia obsługuje zmiany koszyka wykonywane przez fetch i XHR. Na stronach, na których działa tylko skrypt czyszczenia prezentów bez widgetu, przechwytywane są wyłącznie zmiany fetch. Sposób odświeżania motywu nadal może wpływać na zawartość wyświetlaną w panelu koszyka.
- Czyszczenie jest wykonywane w miarę możliwości. Jeśli któryś krok się nie powiedzie, pozycja prezentu może pozostać widoczna do następnej interakcji z koszykiem.
Po usunięciu pozycji Bundlex wysyła zdarzenia cart-refresh, aby skłonić motyw do ponownego renderowania. W motywie Dawn oraz bezpłatnych motywach Shopify opartych na Dawn Bundlex dodatkowo samodzielnie odświeża panel koszyka, stronę koszyka i licznik ikonki koszyka. Nie istnieje jedno zdarzenie cart-updated, które implementują wszystkie motywy Shopify, dlatego w innych motywach, które go nie nasłuchują, panel koszyka może pozostać nieaktualny do następnej interakcji. Najważniejsze: obliczenia koszyka są zawsze prawidłowe. Klient nie zostanie obciążony za pozostającą pozycję za 0 USD, a suma przy kasie jest prawidłowa niezależnie od tego, co panel koszyka chwilowo wyświetla.
Podsumowanie
- Panel koszyka pokazuje pełną cenę, ale suma i kasa są prawidłowe: sprawdź przestarzałe pola cen Liquid lub nieaktualne dane koszyka.
- Sprawdź za pomocą
/cart.js:final_price/final_line_priceuwzględniają rabat. - Naprawa w motywie: przełącz te pola na
final_priceorazfinal_line_price. - Pozostała pozycja prezentu za 0 USD po zmniejszeniu ilości jest spodziewana, ponieważ Shopify nie może usuwać pozycji. Bundlex usuwa ją w obsługiwanych motywach, a cena przy kasie jest zawsze prawidłowa.
Czy ten artykuł był pomocny?
Twoja opinia pomaga nam ulepszać dokumentację.