【问题标题】:checking for inventory quantity in mini cart page Shopify检查迷你购物车页面 Shopify 中的库存数量
【发布时间】:2020-08-06 13:33:59
【问题描述】:

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

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

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

【问题讨论】:

    标签: shopify


    【解决方案1】:

    你有两个选择。

    选项 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 状态代码进行响应,并且不允许您添加超出可用数量的商品。

    【讨论】:

    • 谢谢弗拉基米尔。
    • 嗨弗拉基米尔我已经像你说的那样制作了一个对象,但是现在我在创建 cartItemMaxQuantities 对象时遇到了另一个问题,如果用户更改您的购物车数据说从其中删除项目或添加新项目,cartItemMaxQuantities 对象是没有更新,我怎样才能更新那个对象
    • 感谢您的回复弗拉基米尔我正在努力解决这个问题..谢谢
    猜你喜欢
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    • 2022-10-19
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多