【发布时间】:2012-12-01 15:29:42
【问题描述】:
我正在使用购物车属性将每个产品的额外信息添加到购物车(来自产品页面)。 我专门使用 购物车属性 而不是 订单项属性,因为客户需要能够在以后的订单中编辑此信息,而订单项属性不能允许。
添加信息效果很好,当客户决定从购物车中删除商品时,问题就出现了,因为尽管商品已被删除,但购物车属性仍然存在,因为它没有专门与产品相关联(命名除外)我们给它的约定。)
那么,有没有办法更新/删除特定的购物车属性?
提前感谢您的回复!
【问题讨论】:
我正在使用购物车属性将每个产品的额外信息添加到购物车(来自产品页面)。 我专门使用 购物车属性 而不是 订单项属性,因为客户需要能够在以后的订单中编辑此信息,而订单项属性不能允许。
添加信息效果很好,当客户决定从购物车中删除商品时,问题就出现了,因为尽管商品已被删除,但购物车属性仍然存在,因为它没有专门与产品相关联(命名除外)我们给它的约定。)
那么,有没有办法更新/删除特定的购物车属性?
提前感谢您的回复!
【问题讨论】:
自从引入购物车属性以来,我就一直在使用它们,并在此过程中发现了与它们相关的大部分错误(Shopify 在此过程中已修复),这让我有足够的信心来告知您这个问题。
要编辑它们,只需向购物车提供用于创建它们的相同密钥,然后更改信息。如果您提供一个空值,您将删除该键。它只是一个键:值存储。顺便说一下,在我的书中可以编辑的订单项也是如此。我设法通过简单地更改键的值来编辑它们,并通过提供订单项索引值,您可能忽略了什么?
无论如何,如果您使用提供的 Shopify Javascript API 代码并检查那个小库,您会看到用于创建属性的函数。稍作改动,您就可以引入自己的购物车属性 CRUD 功能以满足您的需求。
这是一个展示更新购物车属性的旧示例,数据是一个字符串,即)“attributes[fizz]='buzz'(请注意,您可以因此存储 JSON):
updateCartAttributes: function(data, callback) {
var params = {
type: 'POST',
url: '/cart/update.js',
data: data,
dataType: 'json',
success: function(cart) {
if ((typeof callback) === 'function') {
callback(cart);
}
else {
Shopify.api.onCartUpdate(cart);
}
},
error: function(XMLHttpRequest, textStatus) {
Shopify.api.onError(XMLHttpRequest, textStatus);
}
};
$.ajax(params);
}
【讨论】:
attributes[fizz]=buzz 只需要像这样用双引号括起来:"attributes[fizz]=buzz"