注册 enricher
每当购物车加载或发生变化时,Aftersell 会为购物车中的每个产品或变体获取你的 fragment。这个获取是非阻塞的:购物车会立即渲染,并在数据到达后重新触发
cart_updated。缓慢或失败的 fragment 永远不会延迟或破坏购物车。
读取数据
line.metadata.delivery 是 undefined。读取时务必加保护判断。
在购物车中渲染
props.line 接收该行项目:
变体级数据
onType 设为 'ProductVariant':
不止于 metafields
Product 或 ProductVariant 上暴露的任何内容都可以用,不仅仅是 metafields:
需要注意的要点
- 每次读取都要加保护。
metadata默认是{},在获取完成之前你的命名空间是undefined。购物车总是在数据到达之前渲染。 - 每个
id都是独立的命名空间。 多个 enricher 可以共存而不冲突,包括其他应用注册的。 - Metafields 必须对 Storefront 可见。 未对 Storefront API 开放的 metafield 会返回
null。如果什么都拿不到,请在 Shopify 后台检查其定义。 - 保持 fragment 精简。 它会在每次购物车变化时为购物车中的每个产品运行。只请求你要用的字段,而不是所有字段。
- 在初始化阶段注册。 它是一个 hook,所以应放在 Initialization 脚本的开头。
- 花括号必须配对。 fragment 外层不加花括号,但任何嵌套选择都需要自己配对的括号。不配对的 fragment 会被拒绝。
后续阅读
registerCartEnricher:完整的 hook 参考。- 自定义代码块:渲染数据。
- Cart 对象:
metadata在行项目上的位置。