变体显示售罄但加购按钮还能点进去
现象#
前台尺码按钮已标 Sold out,点加购仍提示已加入购物车,进购物车才报库存不足;另一个变体相反,明明有货却显示售罄。
原因#
- variant.available 由库存、inventory_policy 和发货地点共同决定,不只看数量
- 库存记在不给 Online Store 发货的地点,可售量算出来就是 0
- 自定义加购按钮直接 POST
/cart/add,没有判断变体是否可售 - 商品未追踪库存时 available 恒为 true,前台却拿库存数字做判断
处理步骤#
- 查
variant.availableForSale与inventoryQuantity,确认差异来自哪里 - 把该变体的
inventoryPolicy设为 DENY,禁止超卖时仍显示可购买 - 按钮渲染前加
{% if variant.available %}判断 - Ajax 加购处理 422 响应,把错误文案显示在按钮下方
- 检查
inventoryItem.tracked,未追踪库存的商品不要用数量判断
验收标准#
售罄变体按钮为 disabled 且提交无效;有货变体加购后购物车行数量与价格正确。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。