Регистрация enricher
Каждый раз при загрузке или изменении корзины Aftersell запрашивает ваш фрагмент для каждого товара или варианта в корзине. Запрос неблокирующий: корзина отображается немедленно и повторно генерирует
cart_updated, когда данные приходят. Медленный или сбойный фрагмент никогда не задерживает и не ломает корзину.
Чтение данных
line.metadata.delivery равно undefined, пока не разрешится первый запрос. Всегда защищайте чтение проверкой.
Отображение в корзине
props.line:
Данные на уровне варианта
onType: 'ProductVariant', когда метаполе находится на варианте, а не на товаре:
Больше, чем метаполя
Product или ProductVariant, а не только метаполя:
Что важно сделать правильно
- Защищайте каждое чтение.
metadataпо умолчанию равно{}, а ваше пространство имён —undefined, пока не разрешится запрос. Корзина всегда отображается до прихода данных. - Каждый
id— собственное пространство имён. Несколько enricher-ов сосуществуют без коллизий, включая зарегистрированные другими приложениями. - Метаполя должны быть видимы для Storefront. Метаполе, не открытое для Storefront API, возвращает
null. Проверьте определение в админке Shopify, если ничего не получаете. - Держите фрагмент небольшим. Он выполняется для каждого товара в корзине при каждом её изменении. Запрашивайте поля, которые используете, а не всё подряд.
- Регистрируйте на этапе настройки. Это хук, поэтому его место в начале скрипта Initialization.
- Скобки должны быть сбалансированы. Без внешних скобок вокруг фрагмента, но любая вложенная выборка требует своей пары. Несбалансированный фрагмент отклоняется.
Что дальше
registerCartEnricher: полный справочник по хуку.- Блоки Custom code: отображение данных.
- Объект корзины: где на строке находится
metadata.