在 Shopify 中如何通过 url 将多个产品添加到不同数量的购物车

In Shopify how to add multiple products to cart with varying quantities via url

我知道在 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。

更新

对 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 次才能添加不同的数量。

我使用以下代码片段解决了这个问题:

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

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

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

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

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

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

所以url的格式是:

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