Shopify cart-template中variant未定义问题及库存判断需求
解决Shopify购物车模板中缺货商品提示的问题
核心问题:为什么variant未定义?
在Shopify的cart-template.liquid模板里,没有全局的variant变量——这个变量只在商品详情页(比如product-template.liquid)的上下文里存在。购物车页面里,所有商品都是以「购物车项(cart item)」的形式存在的,每个项的变体信息嵌套在item.variant里,所以你直接调用variant自然会被提示“not defined”。
正确的代码实现
你需要把判断逻辑放在购物车项的循环内部,遍历cart.items来获取每个商品的变体库存:
{% for item in cart.items %} <!-- 这里是单个购物车商品的区块 --> {% if item.variant.inventory_quantity < 1 %} <p id="dispatch" style="color: #f48c21">将于6月7日发货</p> {{ item.variant.inventory_quantity }} <!-- 现在会正确输出库存数 --> {% endif %} <script>console.log({{ item.variant.inventory_quantity }})</script> {% endfor %}
额外优化方案
如果不想给每个缺货商品单独显示提示,而是给整个购物车加统一提示,可以先遍历所有商品判断是否存在缺货项,再在循环外展示:
{% set has_out_of_stock = false %} {% for item in cart.items %} {% if item.variant.inventory_quantity < 1 %} {% assign has_out_of_stock = true %} {% endif %} {% endfor %} {% if has_out_of_stock %} <p id="dispatch" style="color: #f48c21">您的订单包含缺货商品,将于6月7日发货</p> {% endif %}
补充说明
因为你设置了允许缺货购买,商品库存会出现负数的情况,所以inventory_quantity < 1的判断能准确覆盖库存为0和负数的所有缺货场景。
内容的提问来源于stack exchange,提问作者amar ghodke
相关产品推荐
相关产品推荐

