在 Shopify 迷你购物车页面中检查库存数量

checking for inventory quantity in mini cart page Shopify

我正在开发一个 shopify 主题,我已经创建了如图所示的迷你购物车页面,我的网站是:https://codeinspire-dev2.myshopify.com/cart

我正在使用 vue.js 来控制此迷你购物车页面数据,我已调用

axios.get('/cart.js') 用数据填充它,该调用为我提供了包含所有项目的购物车对象,但没有 inventory_quantity 属性 那里。用户可以更改迷你购物车页面上的数量,但我无法检查迷你购物车页面上的产品数量是否大于 inventory_quantity。我怎样才能做到这一点。感谢任何帮助。

你有两个选择。

选项 1.
由于 cart 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 更新 adding/removing 购物车商品上的对象 - 创建一个新的页面模板,例如page.max-qtys.liquid 输出这个 JSON 对象。然后在 adding/removing 项目上,您可以通过请求您网站上的任何页面并添加 ?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 状态代码进行响应,并且不允许您添加超出可用数量的商品。