是否可以在将订单项属性添加到购物车后更改? (通过正常的表单提交,还是通过AJAX?)
我尝试使用“属性[MyProperty]”键对/ cart / change进行POST,但到目前为止还没有运气。这与line参数结合使用,表示唯一的订单项。
有什么想法吗?或者它只是一个'不'?
答案 0 :(得分:6)
使用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有一些技巧,但事实并非如此。
注意,当我尝试通过对cart / change.js发布POST并指定quantity=0
来删除订单项时,如下所示:
quantity=0&id=278440178&properties%5Bmy-property%5D=property%20FOO
如果属性property FOO
是不属于任何项目的属性(我的购物车现在只有property BAR
的商品),则该商品不会从购物车中移除。另一方面,如果我这样做:
POST:quantity=0&id=278440178&properties%5Bmy-property%5D=property%20BAR
正常删除该项目。
结论:在cart / change.js中,shopify使用行项目属性的方式与使用“id”的方式相同,即查找要更改其数量的行项目。就像您无法使用cart / change.js更改订单项的ID一样,您无法使用它来更改订单项的属性。