Shopify Functions

Shopify Scripts 的 cart_line 改价逻辑怎么改写

现象#

原脚本遍历 cart.line_items 把 tag 为 gift 的行单价改成 0,迁移后赠品仍按原价计费,购物车里也找不到 0 元的行。

原因#

  • Scripts 直接改 line_item.price,Functions 只能用 lineUpdate 或折扣影响金额
  • lineUpdate 的改价只对 Plus 与开发店开放,其他套餐返回的操作被丢弃
  • 赠品若不是购物车里真实存在的变体,就没有 cartLineId 可更新
  • tag 判断要写进输入查询,没取 hasAnyTag 时函数里拿不到依据

处理步骤#

  1. 把原条件翻成查询字段,如 hasAnyTag(tags: ["gift"])
  2. 赠品是独立变体时用 lineUpdate 把价格设为 0,并在 title 标注
  3. 赠品需自动加入时用 lineExpand,先保证行存在再改价
  4. 只想减免、不想改价时改用折扣函数 target 到该 cartLine
  5. 回放一条含赠品的购物车,核对 output 的价格字段与结账页金额

验收标准#

含 gift 标签的购物车在结账页显示赠品行 0 元,订单小计不含赠品金额,非赠品行价格不受影响。

本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。