> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aftersell.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Ograniczanie koszyka do jednego upsellu naraz

> Użyj niestandardowego HTML, aby ukryć moduł upsell po dodaniu pojedynczego upsellu do koszyka.

<div id="overview">
  # Omówienie
</div>

Ta personalizacja zapobiega dodaniu wielu upselli naraz, ukrywając sekcję upsell natychmiast po zaakceptowaniu jednego upsellu. Po usunięciu upsellu moduł pojawia się ponownie.

Przydaje się to, gdy chcesz:

* Uprościć doświadczenie koszyka
* Zmniejszyć zmęczenie decyzyjne
* Utrzymać wrażenie ekskluzywności wybranych ofert

***

<div id="how-it-works">
  ## Jak to działa
</div>

* Gdy klient akceptuje upsell, sekcja upsell zostaje ukryta
* Jeśli produkt upsell zostanie usunięty, sekcja upsell staje się ponownie widoczna
* Działa zarówno z upsellami rekomendowanymi przez AI, jak i ręcznymi

***

<div id="where-to-add-the-code">
  ## Gdzie dodać kod
</div>

1. Przejdź do **Upcart > Cart Editor > Settings > Custom HTML**

<Warning>
  **Poniższy selektor dotyczy tylko wersji 1.** `.upcart-upsells-module` znajduje się na karuzeli upselli V1. Jeśli Twój moduł Upsells jest w **wersji 2**, zamień go na `.upcart-public-upsell` we wszystkich trzech handlerach — reszta skryptu pozostaje bez zmian. Zobacz [bibliotekę selektorów CSS V2](/pl/upcart/upcart_css_selector_library_v2).
</Warning>

2. Wklej poniższy kod w lokalizacji **Above announcements/rewards**

***

<div id="html-script-to-copy">
  ## Skrypt HTML do skopiowania
</div>

```
<script>  
  // Show upsells again when upsells are removed  
  window.upcartSubscribeItemRemoved((event) => {  
    if (event.item?.properties?.__upcartUpsell) {  
      const upsells = window.upcartDocumentOrShadowRoot.querySelector(".upcart-upsells-module");  
      if (upsells) upsells.style.display = "block";  
    }  
  });  
  
  // Hide upsells once one is added  
  window.upcartSubscribeUpsellsAddedToCart(() => {  
    const upsells = window.upcartDocumentOrShadowRoot.querySelector(".upcart-upsells-module");  
    if (upsells) upsells.style.display = "none";  
  });  
  
  // Check for upsell in cart when it loads  
  window.upcartSubscribeCartLoaded((event) => {  
    const upsells = window.upcartDocumentOrShadowRoot.querySelector(".upcart-upsells-module");  
    const items = event.cart.items || [];  
    const hasUpsell = items.some(item => item?.properties?.__upcartUpsell);  
    if (upsells && hasUpsell) {  
      upsells.style.display = "none";  
    }  
  });  
</script>
```

<Note>
  **Uwaga dotycząca starszej wersji:** wywołania zwrotne `window.upcartOnItemRemoved`, `window.upcartOnAddUpsell` i `window.upcartOnCartLoaded` nadal działają, ale są przestarzałe i generują ostrzeżenia w konsoli. We wszystkich nowych skryptach używaj `upcartSubscribeItemRemoved`, `upcartSubscribeUpsellsAddedToCart` i `upcartSubscribeCartLoaded`.
</Note>

***

<div id="result">
  ## Rezultat
</div>

Po dodaniu tej personalizacji:

* Klienci widzą upselle tylko wtedy, gdy nie zaakceptowali jeszcze żadnego
* Moduł upsell zostaje ukryty natychmiast po dodaniu upsellu
* Moduł pojawia się automatycznie ponownie, jeśli produkt upsell zostanie usunięty
* Nie trzeba konfigurować identyfikatorów produktów ani tagów

Dzięki temu Twoje doświadczenie upsell pozostaje skoncentrowane, uporządkowane i łatwe w odbiorze dla klientów.

***

<div id="still-need-help">
  ## Nadal potrzebujesz pomocy?
</div>

Przy bardziej zaawansowanych personalizacjach zalecamy współpracę z **ekspertem Shopify**. Pomoże Ci on z HTML, CSS i JavaScriptem w Twoim cart drawer.

[Zobacz ekspertów Shopify](https://www.shopify.com/partners/directory)
