> ## 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.

# Ограничение корзины одним апселлом за раз

> Используйте пользовательский HTML, чтобы скрывать модуль апселлов после добавления одного апселла в корзину.

<div id="overview">
  # Обзор
</div>

Эта кастомизация предотвращает добавление нескольких апселлов сразу, скрывая секцию апселлов, как только один апселл принят. Как только апселл удаляется, модуль появляется снова.

Это полезно, если вы хотите:

* Упростить работу с корзиной
* Снизить усталость от принятия решений
* Сохранить эксклюзивность определённых предложений

***

<div id="how-it-works">
  ## Как это работает
</div>

* Когда покупатель принимает апселл, секция апселлов скрывается
* Если товар-апселл удаляется, секция апселлов снова становится видимой
* Работает как с апселлами на основе ИИ-рекомендаций, так и с ручными апселлами

***

<div id="where-to-add-the-code">
  ## Куда добавить код
</div>

1. Перейдите в **Upcart > Cart Editor > Settings > Custom HTML**

<Warning>
  **Приведённый ниже селектор — только для версии 1.** `.upcart-upsells-module` относится к карусели апселлов V1. Если ваш модуль Upsells на **версии 2**, замените его на `.upcart-public-upsell` во всех трёх обработчиках — остальная часть скрипта не меняется. См. [библиотеку CSS-селекторов V2](/ru/upcart/upcart_css_selector_library_v2).
</Warning>

2. Вставьте следующий код в область **Above announcements/rewards**

***

<div id="html-script-to-copy">
  ## HTML-скрипт для копирования
</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>
  **Примечание об устаревшем API:** обратные вызовы `window.upcartOnItemRemoved`, `window.upcartOnAddUpsell` и `window.upcartOnCartLoaded` всё ещё работают, но считаются устаревшими и выводят предупреждения в консоль. Используйте `upcartSubscribeItemRemoved`, `upcartSubscribeUpsellsAddedToCart` и `upcartSubscribeCartLoaded` для всех новых скриптов.
</Note>

***

<div id="result">
  ## Результат
</div>

После добавления этой кастомизации:

* Покупатели видят апселлы только если ещё не приняли один из них
* Модуль апселлов скрывается, как только апселл добавлен
* Модуль автоматически появляется снова, если товар-апселл удалён
* Не нужно настраивать ID товаров или теги

Это делает работу с апселлами сфокусированной, ненавязчивой и удобной для покупателей.

***

<div id="still-need-help">
  ## Всё ещё нужна помощь?
</div>

Для более сложной кастомизации мы рекомендуем обратиться к **эксперту Shopify**. Он поможет с HTML, CSS и JavaScript внутри вашей выдвижной корзины.

[Найти экспертов Shopify](https://www.shopify.com/partners/directory)
