【问题标题】:In Shopify how to add multiple products to cart with varying quantities via url在 Shopify 中,如何通过 url 将不同数量的多个产品添加到购物车
【发布时间】:2019-09-22 23:45:25
【问题描述】:

我知道在 Shopify 中您可以像这样添加多个产品:

/cart/add?id[]=VARIANT_ID1&id[]=VARIANT_ID2

我的问题是,您将如何调整添加的每种产品的数量?

例如,我希望 VARIANT_ID1 的数量为 2,VARIANT_ID2 的数量为 1?

我试过了:

/cart/add?id[]=VARIANT_ID1&quantity=2&id[]=VARIANT_ID2&quantity=1

但它只是将所有东西的数量设为 1。

【问题讨论】:

    标签: shopify shopify-app shopify-template


    【解决方案1】:

    更简单的方法是使用 Shopify 永久链接。

    购物车永久链接将您的客户直接带到结帐屏幕的第一页,其中商品已预先加载到他们的购物车中。

    这是购物车永久链接的样子:

    http://your-store.myshopify.com/cart/70881412:1,70881382:1
    

    其中 70881412 是产品多属性的唯一 ID,1 是数量。

    所以url的格式是:

    http://yourstore.com/cart/#{variant_id}:#{quantity}(,...)
    

    【讨论】:

    • 效果很好,但大多数网站不希望跳过购物车页面。
    【解决方案2】:

    我通过使用下面的代码 sn-p 解决了这个问题:

    /cart/update?updates[VARIANT_ID1]=quantity&updates[VARIANT_ID2]=quantity

    【讨论】:

    • 几乎是完美的解决方案,但它取代了购物车中已有的任何数量。所以,可能会有问题。
    • 是的,这是@ChrisHayes 的一个缺点。你有什么解决方法吗?
    • 我最终将/cart/update?updatesGET /cart.js 结合使用,以避免在几个请求中挂起“添加到购物车”。因此,在页面加载时,它会获取购物车中的商品并使用正确的数量更新按钮。但是,如果有人在多个标签中添加到购物车而不刷新页面,仍然不完美。丑陋的解决方法是每 X 秒获取一次购物车状态。
    • 你明白了!就是这样,没有简洁完美的解决方案。
    【解决方案3】:

    更新

    对 AJAX API 进行了更新,现在允许通过相同的请求添加具有不同数量的多个变体。

    例子:

    fetch('/cart/add.js', {
        method: "post",
        headers: { 'content-type': 'application/json' },
        body: JSON.stringify({
            items: [
                {
                    id: 33116502556724,
                    quantity: 5
                },
                {
                    id: 33116502589492,
                    quantity: 3
                }
            ]
        })
    })
    

    旧答案

    您不能将数量用作每个变体的单独项目。

    你有几个选择,但它们都有一些缺点。

    请参阅此文档以获取请求:https://help.shopify.com/en/themes/development/getting-started/using-ajax-api

    使用/cart/add.js

    您可以创建多个 AJAX 请求并将每个单独的项目添加为新的 AJAX 请求。

    优点:

    • 如果购物车中的产品已经存在,则不会影响它们

    缺点:

    • AJAX 请求过多

    使用/cart/update.js

    您可以提出一个请求并将不同的数量传递给每个变体。

    优点

    • 使用不同数量的单个 AJAX 请求保存所有变体

    缺点

    • 如果产品已添加到购物车中,您将覆盖产品的数量

    因此,解决方案可能是获取cart.js 响应,检查当前变体是否存在,如果存在则在将数量添加到现有变体时制作update.js。所以它不是那么简单。

    我想不出更简单的解决方案,但最终您可能需要至少 2 次 AJAX 调用才能添加不同的数量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-19
      • 2020-01-03
      • 2013-05-07
      • 2017-01-03
      • 2019-10-02
      • 1970-01-01
      相关资源
      最近更新 更多