Liquid error divided by 0 怎么定位
现象#
商品页价格下方变成一行灰字 Liquid error (snippets/price line 18): divided by 0,折扣百分比位置空白,商品本身还能正常加购。
原因#
- 拿 compare_at_price 当分母算折扣,商品没设原价时该值为 0,除法立刻抛错
- 分母来自 metafield 或两个价格字段的差值,新建商品这些值还是空
- Liquid 的除法不做零值保护,出错时只把提示写进页面而不阻断渲染
- 切换变体后重算,但选中的变体没有原价,第二次渲染才出现这行字
处理步骤#
- 用
{% if product.compare_at_price > product.price %}包住整段折扣计算 - 分母先落成变量:
{% assign base = product.compare_at_price | default: 0 %} - 计算写成
{% assign rate = diff | times: 100.0 | divided_by: base %} - 输出前用
{% if rate > 0 %}兜底,为零时整块不渲染 - 在后台给测试商品补一个高于售价的原价,复现并确认提示消失
验收标准#
商品页源码里搜不到 divided by 0,未设原价的商品不显示折扣角标,设了原价的商品百分比与手工计算结果一致。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。