Shopify 报错排障

Liquid error divided by 0 怎么定位

现象#

商品页价格下方变成一行灰字 Liquid error (snippets/price line 18): divided by 0,折扣百分比位置空白,商品本身还能正常加购。

原因#

  • 拿 compare_at_price 当分母算折扣,商品没设原价时该值为 0,除法立刻抛错
  • 分母来自 metafield 或两个价格字段的差值,新建商品这些值还是空
  • Liquid 的除法不做零值保护,出错时只把提示写进页面而不阻断渲染
  • 切换变体后重算,但选中的变体没有原价,第二次渲染才出现这行字

处理步骤#

  1. 用 {% if product.compare_at_price > product.price %} 包住整段折扣计算
  2. 分母先落成变量:{% assign base = product.compare_at_price | default: 0 %}
  3. 计算写成 {% assign rate = diff | times: 100.0 | divided_by: base %}
  4. 输出前用 {% if rate > 0 %} 兜底,为零时整块不渲染
  5. 在后台给测试商品补一个高于售价的原价,复现并确认提示消失

验收标准#

商品页源码里搜不到 divided by 0,未设原价的商品不显示折扣角标,设了原价的商品百分比与手工计算结果一致。

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