在 Shopify 中,如何通过 url 将不同数量的多个产品添加到购物车
Posted
技术标签:
【中文标题】在 Shopify 中,如何通过 url 将不同数量的多个产品添加到购物车【英文标题】:In Shopify how to add multiple products to cart with varying quantities via 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。
【问题讨论】:
【参考方案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?updates
与GET /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 调用才能添加不同的数量。
【讨论】:
以上是关于在 Shopify 中,如何通过 url 将不同数量的多个产品添加到购物车的主要内容,如果未能解决你的问题,请参考以下文章