Skip to main content
Скрывайте строки, которые покупатель не должен видеть, переименовывайте строки с неудачными названиями и управляйте порядком отображения — всё это не затрагивая фактическое содержимое корзины. Это заменяет старый приём скрытия элементов корзины через CSS или style.display = 'none'. Line transform применяется при каждом рендере корзины, поэтому переживает обновления, повторные рендеры и повторные открытия панели.

Скрыть строку

Скрытие — это не удаление. Скрытая строка остаётся в корзине покупателя, остаётся в итоговой сумме и проходит до оформления заказа; она просто не отрисовывается в панели. При этом она исчезает из getCart().items и itemCount, поэтому ваш собственный код тоже перестаёт её видеть. Если нужно удалить по-настоящему, используйте removeItem.
Типичные кандидаты на скрытие:

Переименовать строку

Четыре сеттера, доступные на строке:

Управление порядком

Компаратор имеет ту же форму, что ожидает Array.prototype.sort, и выполняется после скрытия и переименования:
Возвращайте 0 для пар, которые вас не интересуют. Компараторы компонуются как правила разрешения ничьих: первый, вернувший ненулевое значение, решает судьбу этой пары, а возврат 0 передаёт решение следующему, вместо того чтобы навязывать порядок.

Скрыть целый блок, а не строку

Line transform работает со строками корзины. Чтобы показывать разные настройки блока по стране, рынку или валюте (например, разные уровни Rewards), используйте условия в редакторе корзины. Код не требуется, и это переживает редизайны корзины. Итоговая сумма и содержимое корзины не являются типами условий редактора. Обращайтесь к SDK, когда ваше правило не выражается условиями (ID товаров в корзине, пользовательская сумма и т. д.). В этом случае выполните запрос к shadow root по публичному классу cart-external-*:
Это выполняется после каждого рендера, поэтому блок может мелькнуть на экране до того, как ваш код его скроет. У условного рендеринга такой проблемы нет, поэтому предпочитайте его везде, где он подходит.

Что важно сделать правильно

  • Трансформации — это вызовы настройки. Регистрируйте их в начале скрипта Initialization; ready() не нужен.
  • Выполняются трансформации всех. Ваша компонуется с зарегистрированными другими приложениями. Вы не можете заменить их трансформации, а они не могут отбросить вашу.
  • Трансформация не может изменить цену, количество или идентичность. Она меняет только отображение. Для реальных изменений используйте действия.
  • Трансформация, выбросившая ошибку, молча пропускается. Остальные продолжают работать. Проверяйте aftersellCartDebugEvents во время разработки.
  • registerLineTransform возвращает функцию отмены регистрации, если позже понадобится её отменить.

Что дальше

  • Хуки: полный справочник по хукам.
  • Объект корзины: каждое поле, по которому можно ветвиться.
  • Custom CSS: соглашение о классах cart-external-*.