在 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}(,...)
我知道在 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}(,...)