【问题标题】:Update/Remove cart attributes in Shopify在 Shopify 中更新/删除购物车属性
【发布时间】:2012-12-01 15:29:42
【问题描述】:

我正在使用购物车属性将每个产品的额外信息添加到购物车(来自产品页面)。 我专门使用 购物车属性 而不是 订单项属性,因为客户需要能够在以后的订单中编辑此信息,而订单项属性不能允许。

添加信息效果很好,当客户决定从购物车中删除商品时,问题就出现了,因为尽管商品已被删除,但购物车属性仍然存在,因为它没有专门与产品相关联(命名除外)我们给它的约定。)

那么,有没有办法更新/删除特定的购物车属性?

提前感谢您的回复!

【问题讨论】:

    标签: shopify liquid


    【解决方案1】:

    自从引入购物车属性以来,我就一直在使用它们,并在此过程中发现了与它们相关的大部分错误(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);
    }
    

    【讨论】:

    • 嗨,大卫,我刚刚为另一个项目重新访问了这个答案,但我注意到你说“就像订单项一样,顺便说一下,在我的书中可以编辑。”您是指结帐过程之前的任何时间,还是商店所有者稍后可以在管理员中更改它们?
    • 订单项属性只能在结帐前进行编辑。结帐后,它们是只读的。无法使用 API 更改它们。
    • 此处需要微小的更新 - 删除嗡嗡声周围的撇号。字符串attributes[fizz]=buzz 只需要像这样用双引号括起来:"attributes[fizz]=buzz"
    • @DavidLazar - 对于需要可修改的结帐后行属性且不涉及全新订阅的可定制订阅,是否有任何解决方案,因为它们在结帐后不可编辑?
    • @DavidLazar “如果您提供空值,您将删除密钥。”我没有发现这种情况 - 它留下了附加的行项目属性,只是带有一个空白值。这是通过 /cart/change.js.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 2012-10-21
    相关资源
    最近更新 更多