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

# Как работают блоки?

> Разберитесь в блоках Aftersell Cart: секции и вложенные блоки, заполненная и пустая корзина, лимиты, заблокированные блоки, условия и настройки блоков.

Макет вашей корзины — это стопка **блоков**: настраиваемых элементов, которые вы добавляете, переставляете, оформляете и настраиваете в редакторе корзины. Какие блоки вы включаете и в каком порядке — это и есть корзина, которую видят покупатели.

О том, как блоки располагаются внутри **состояний** и **секций**, см. [Как работают корзины?](/ru/aftersell/cart/how-carts-work).

<div id="blocks-and-sub-blocks">
  ## Блоки и вложенные блоки
</div>

Есть два вида блоков:

* **Блоки** располагаются непосредственно в корзине, в одной из трёх секций: **Header**, **Body** или **Footer**. Каждая секция предлагает свой набор блоков.
* **Вложенные блоки** размещаются внутри другого блока. Сегодня вложенные блоки есть только у [**Cart items**](/ru/aftersell/cart/cart-items-block): строка **Product** (сама строка позиции), [**Subscription upgrade**](/ru/aftersell/cart/subscription-upgrade-block) и [**Custom code**](/ru/aftersell/cart/custom-code-blocks).

<div id="adding-reordering-and-removing-blocks">
  ## Добавление, перестановка и удаление блоков
</div>

* **Добавляйте** блок через окно выбора **Add block**. Блок затенён, если он не может размещаться там, куда вы его добавляете, или если вы достигли его лимита (окно выбора показывает бейдж `count/max`).
* **Переставляйте**, перетаскивая блок внутри его секции.
* **Удаляйте** значком корзины, кроме заблокированных блоков (ниже).
* **Показывайте/скрывайте** большинство блоков переключателем-глазом, который скрывает блок от покупателей, не удаляя его. Несколько структурных блоков скрыть нельзя: **Cart items**, **Checkout button** и строка **Product**.

<div id="locked-blocks">
  ## Заблокированные блоки
</div>

Некоторые блоки можно переставлять, но нельзя удалить, чтобы базовое поведение корзины (например, оформление заказа) нельзя было убрать случайно:

* **Cart items**
* **Checkout button**

<div id="default-blocks">
  ## Блоки по умолчанию
</div>

Новые корзины начинают с рабочего макета по умолчанию:

* **Заполненная корзина:** Header, Banner, Cart items, Summary, Checkout button
* **Пустая корзина:** Header, блок Empty cart

<Info>
  **Состояние пустой корзины** — это весь пустой макет. **Блок Empty cart** — один блок внутри него. О разнице см. [Как работают корзины?](/ru/aftersell/cart/how-carts-work).
</Info>

<div id="how-many-of-each-block-you-can-add">
  ## Сколько блоков каждого типа можно добавить
</div>

Лимиты считаются **на состояние корзины**, а не на корзину. Заполненная корзина и пустая корзина имеют отдельные лимиты, поэтому корзина может содержать три баннера в заполненном макете и ещё три в пустом.

Большинство блоков ограничены одним на состояние. Исключения:

| Блок           | Максимум на состояние корзины |
| -------------- | ----------------------------- |
| Banner         | 3                             |
| Image          | 3                             |
| Product add-on | 3                             |
| Summary        | 2                             |
| Custom code    | Без ограничений               |

<div id="content-design-and-code">
  ## Content, Design и Code
</div>

Каждый блок настраивается через до трёх поверхностей в редакторе:

* **Content**: настройки блока (текст, выбор товаров, пороги и так далее). Блок **Custom code** — единственное исключение: у него нет панели Content, потому что блок *и есть* код.
* **Design**: поблочное оформление, накладываемое поверх глобальных [**настроек дизайна**](/ru/aftersell/cart/design-settings). Есть у каждого блока, кроме **Custom code**, у которого вообще нет панели настроек.
* **Code**: переопределение встроенного отображения блока с помощью [**пользовательского шаблона**](/ru/aftersell/cart/custom-templates). Большинство блоков это поддерживают; пара — нет.

<div id="show-or-hide-by-market-country-or-currency">
  ## Показ или скрытие по рынку, стране или валюте
</div>

Некоторые блоки могут показывать разные настройки или полностью скрываться в зависимости от того, кто покупатель. Это отличается от **переключателя-глаза** в боковой панели, который включает или выключает блок для всех.

|                    | **Переключатель-глаз**                                 | **Условия**                                                     |
| ------------------ | ------------------------------------------------------ | --------------------------------------------------------------- |
| **Что делает**     | Скрывает или показывает весь блок для всех покупателей | Выбирает, какой вариант настроек увидит покупатель (или ничего) |
| **На основе чего** | Ваш выбор в редакторе                                  | Рынок Shopify, страна покупателя или валюта покупателя          |
| **Где**            | Значок глаза в боковой панели у большинства блоков     | Панель настроек у блоков, поддерживающих условия                |

**Поддерживаемые типы условий сегодня:** рынок Shopify, страна покупателя и валюта покупателя (каждое с **In** или **Not in**). Итог корзины и содержимое корзины **не** являются типами условий. Используйте пороги уровней в [Rewards](/ru/aftersell/cart/rewards-block) для прогресса по сумме/количеству или [Cart SDK](/ru/aftersell/cart/sdk-overview), когда нужно правило, которое редактор не может выразить.

Условия — это упорядоченный список: побеждает **первое совпавшее** условие. Помещайте конкретные правила выше универсального **All buyers**. Если ничего не совпало, блок ничего не отображает для этого покупателя.

**В редакторе сегодня** полный интерфейс Conditions доступен в блоке [**Rewards**](/ru/aftersell/cart/rewards-block#per-market-rewards): разные наборы уровней для рынка, страны или валюты. Остальные блоки либо используют единую конфигурацию «для всех покупателей», либо пока не участвуют в этой системе.

Предпросмотр редактора **не** оценивает реального покупателя. Выберите условие в панели, чтобы просмотреть этот вариант.

<div id="all-blocks">
  ## Все блоки
</div>

**Структура**

* [Header](/ru/aftersell/cart/header-block): заголовок, счётчик товаров, логотип и кнопка закрытия, закреплён сверху.
* [Cart items](/ru/aftersell/cart/cart-items-block): товары, которые покупатели добавляют в корзину; повторяется для каждой строки.
* [Subscription upgrade](/ru/aftersell/cart/subscription-upgrade-block): вложенный блок, предлагающий преобразовать позицию в подписку.
* [Summary](/ru/aftersell/cart/summary-block): итоги, экономия и применённые скидки.
* [Checkout button](/ru/aftersell/cart/checkout-button-block): основной призыв к действию для перехода к оформлению заказа.
* [Empty cart](/ru/aftersell/cart/empty-cart-block): содержимое, отображаемое, когда корзина пуста.
* [Express payments](/ru/aftersell/cart/express-payments-block): кнопки ускоренного оформления заказа (Shop Pay, PayPal и другие) внутри корзины.

**Мерчандайзинг**

* [Upsells](/ru/aftersell/cart/upsells-block): рекомендации товаров, подобранные стратегией.
* [Product add-on](/ru/aftersell/cart/product-add-on-block): один конкретный товар, предлагаемый как дополнение.
* [Rewards](/ru/aftersell/cart/rewards-block): многоуровневые вознаграждения, такие как бесплатная доставка или подарки.
* [Shipping protection](/ru/aftersell/cart/shipping-protection-block): опциональное дополнение с защитой доставки.

**Ввод покупателя**

* [Discount code](/ru/aftersell/cart/discount-code-block): поле для применения кода скидки.
* [Notes](/ru/aftersell/cart/notes-block): поле для примечаний к заказу.

**Контент**

* [Banner](/ru/aftersell/cart/banner-block): баннер с сообщением и опциональным таймером обратного отсчёта.
* [Image](/ru/aftersell/cart/image-block): одно изображение или готовый набор, например значки платёжных систем.
* [Custom code](/ru/aftersell/cart/custom-code-blocks): пользовательский HTML или React в любом месте корзины.

**Расширение**

* [Пользовательские шаблоны](/ru/aftersell/cart/custom-templates): переопределяйте отображение любого блока с его вкладки Code.

<div id="blocks-available-in-each-section">
  ## Блоки, доступные в каждой секции
</div>

Каждая секция имеет свой набор доступных блоков. Это сохраняет макет сфокусированным и уменьшает загромождение.

| Секция     | Доступные блоки                                                                                                                                     |
| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Header** | Header, Banner, Rewards, Image, Custom code                                                                                                         |
| **Body**   | Banner, Notes, Discount code, Cart items, Empty cart, Custom code, Rewards, Product add-on, Shipping protection, Image, Upsells                     |
| **Footer** | Banner, Notes, Discount code, Custom code, Rewards, Product add-on, Shipping protection, Express payments, Image, Upsells, Summary, Checkout button |

Некоторые из этих блоков привязаны к состоянию (например, Empty cart — только в пустом состоянии). См. [Как работают корзины?](/ru/aftersell/cart/how-carts-work).

<div id="block-validation-errors">
  ## Ошибки валидации блоков
</div>

Если настройки блока содержат недопустимое значение, рядом с именем этого блока в боковой панели появляется маленькая красная точка. Точка остаётся, пока вы не исправите проблему. Это не закрываемое уведомление.

Пока в каком-либо блоке есть ошибка, **сохранение заблокировано**. Кнопка **Save** остаётся кликабельной, но её нажатие показывает всплывающее сообщение об ошибке (*«Fix the errors in your cart blocks before saving»*) и переходит к первому блоку с проблемой, открывая его настройки, чтобы вы могли исправить подсвеченное поле. **Publish** дополнительно требует отсутствия несохранённых изменений, поэтому остаётся недоступной до успешного чистого сохранения.

Как только недопустимое поле исправлено, точка исчезает сама, и сохранение проходит нормально.

<Note>
  Скрытые блоки тоже проходят валидацию. Скрытый вами блок может содержать недопустимую настройку, показывать точку ошибки и блокировать сохранение точно так же, как видимый, поэтому если сохранение заблокировано, а все видимые блоки выглядят нормально, проверьте скрытые блоки.
</Note>
