【问题标题】:Changing line item properties on cart in Shopify在 Shopify 中更改购物车上的订单项属性
【发布时间】:2012-09-25 10:01:53
【问题描述】:

是否可以在将订单项属性添加到购物车后更改它们? (通过普通表单提交,还是通过 AJAX?)

我尝试使用“properties[MyProperty]”键对 /cart/change 进行 POST,但到目前为止还没有成功。这与 line 参数相结合以表示唯一的订单项。

有什么想法吗?还是直接说“不”?

【问题讨论】:

  • 我遇到了这个问题。作为一种解决方法,我每次 ToT 时都会删除并重新添加行项目;
  • 我知道这个问题很古老,但对于任何想知道的人来说,这可以使用行项目作为标识符。 Check out this answer

标签: shopify cart


【解决方案1】:

使用 Shopify 的 API,您不能使用 cart/change.js 更改订单项的属性。原因是 cart/change.js 使用“属性”来查找您想要的订单项。 API 文档省略了这一点。这是一个例子:

当我使用以下 url 编码参数对 cart/add.js 进行 POST 时:

quantity=9403&id=278440178&properties%5Bmy-property%5D=property%20BAR

响应将包括,

"properties":{"my-property":"property BAR"}

当我继续对 cart/change.js 进行 POST 以将属性从 BAR 更改为 FOO 时,

id=278440178&properties%5Bmy-property%5D=property%20FOO

然后响应将包括,

"properties":{"my-property":"property BAR"}

也就是说,我无法以这种方式更改订单项属性。您可能会怀疑这是因为 cart/change.js API 存在一些技巧,但事实并非如此。

请注意,当我尝试通过 POST 到 cart/change.js 并指定 quantity=0 来删除订单项时,如下所示:

quantity=0&id=278440178&properties%5Bmy-property%5D=property%20FOO

由于property FOO 属性不属于任何物品(我的购物车现在只有一个带有property BAR 的物品),因此该物品不会从购物车中删除。另一方面,如果我这样做:

发帖:quantity=0&id=278440178&properties%5Bmy-property%5D=property%20BAR

项目被正常删除。

结论:在 cart/change.js 中,shopify 使用 line-item 属性的方式与使用 'id' 的方式相同,即查找要更改数量的 line item。就像您不能使用 cart/change.js 来更改订单项的 id 一样,您也不能使用它来更改订单项的属性。

【讨论】:

  • 我很高兴我终于想通了。我已经打开这个标签一个月了!
  • 那么如何从购物车中更改订单项属性?您是否必须从购物车中删除商品并重新添加?
  • 不幸的是,这就是我最终这样做的方式。我将 POST 添加为删除调用的回调。我们希望 Shopify API 在很多事情上做得更好……也许有希望,也许您会发现更好的方法。如果你这样做,请务必让我知道!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-18
  • 2020-06-22
相关资源
最近更新 更多