是否可以在将订单项属性添加到购物车后更改它们?(通过普通表单提交,还是通过 AJAX?)
我已经尝试使用“properties [MyProperty]”键对 /cart/change 进行 POST,但到目前为止还没有运气。这与 line 参数一起表示唯一的行项目。
有任何想法吗?或者它只是一个直接的“不”?
使用 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
现在只有一个项目),因此该项目不会从购物车中删除。另一方面,如果我这样做:
邮政:quantity=0&id=278440178&properties%5Bmy-property%5D=property%20BAR
该项目被正常删除。
结论:在 cart/change.js 中,shopify 使用 line-item 属性的方式与使用 'id' 的方式相同,即查找要更改数量的 line item。就像您不能使用 cart/change.js 来更改订单项的 id 一样,您也不能使用它来更改订单项的属性。