你有两个选择。
选项 1。
由于购物车 JSON 对象不提供有关可用变体库存数量的信息,因此您需要在主题模板中手动创建此类对象。请参阅下面的代码,了解如何获取购物车中商品的可用库存数量:
{%- assign cart_items_count = cart.items | size -%}
var cartItemMaxQuantities = {
{%- for item in cart.items -%}
"{{ item.id }}": {{- item.variant.inventory_quantity -}}
{%- unless forloop.index == cart_items_count -%},{%- endunless -%}
{%- endfor -%}
};
这将创建一个 JSON 对象,您可以在 JS 逻辑中使用该对象来调整购物车商品数量。对象看起来像这样:
{
variant_id_1: max_available_quantity,
variant_id_2: max_available_quantity,
...,
variant_id_x: max_available_quantity
}
如果您需要在使用 AJAX 添加/删除购物车项目时获取更新的对象 - 创建一个新的页面模板,例如page.max-qtys.liquid 输出这个 JSON 对象。然后在添加/删除项目时,您可以通过请求网站上的任何页面并添加 ?view=max-qtys 查询参数来获取更新的对象,例如/pages/about?view=max-qtys。不要忘记在模板文件的开头添加{% layout none %} 以防止加载您的站点布局文件并仅输出对象JSON。下面是页面模板的代码。
{%- layout none -%}
{%- assign cart_items_count = cart.items | size -%}
{
{%- for item in cart.items -%}
"{{ item.id }}": {{- item.variant.inventory_quantity -}}
{%- unless forloop.index == cart_items_count -%},{%- endunless -%}
{%- endfor -%}
}
选项 2
在将新商品添加到购物车时使用 /cart/add.json 而不是 /cart.update.json 或 /cart/change.json。如果您使用 /cart/add.json 端点,Shopify 将使用 422 状态代码进行响应,并且不允许您添加超出可用数量的商品。