【问题标题】:Shopify - How to update product price on updateShopify - 如何在更新时更新产品价格
【发布时间】:2020-08-21 12:51:26
【问题描述】:

我一直在尝试找出在 Shopify 中将免费产品添加到购物车的最佳方式,但在他们的文档中找不到我要查找的内容。

如果购物车价值为 10 英镑或更多,我需要将产品添加到购物车。我已设法添加产品,但如何将价格更改为零?另外,我如何确保如果用户选择的产品数量较多,他们不会获得多个免费项目,而只会获得一个免费项目?希望这是有道理的。

这是我目前所拥有的,可以很好地添加产品。但不要改变价格。

*编辑:我意识到如果我无法更改商品的价格,那么我可以在购物车页面级别应用固定折扣代码吗?

**编辑:想一想,折扣代码无论如何都不起作用,因为用户可以轻松删除免费产品并仍然获得折扣。也许我需要创建某种无法在商店中搜索到的隐藏产品,将其添加到购物车并禁用数量选择器。

一定有办法做到这一点,因为有应用可以做到这一点。

**我不想使用应用程序

<script>
$(".cart__qty-input").blur(function() {

    location.reload();
})(jQuery);
</script>

{% assign product = all_products['free-gift'] %}

{% unless cart.item_count == 0 or product.empty? or product.variants.first.available == false %}
{% if cart.total_price >= 1000 %}
  {% assign variant_id = product.variants.first.id %}

  <script>
  (function($) {

    var cartItems = {{ cart.items | json }},
        qtyInTheCart = 0,
    cartUpdates = {};

for (var i=0; i<cartItems.length; i++) {
  if ( cartItems[i].id === {{ variant_id }} ) {
    qtyInTheCart = cartItems[i].quantity;
    break;
  }
}

if ( ( cartItems.length === 1 ) && ( qtyInTheCart > 0 ) ) {
  cartUpdates = { {{ variant_id }}: 0 }
}
else if ( ( cartItems.length >= 1 ) && ( qtyInTheCart !== 1 ) ) {
  cartUpdates = { {{ variant_id }}: 1 }
}
else {
  return;
}

var params = {
  type: 'POST',
  url: '/cart/update.js',
  data: { updates: cartUpdates },
  dataType: 'json',
  success: function(stuff) { 
    window.location.href = '/cart';
  }
};

$.ajax(params);

  })(jQuery);
  </script>
{% endif %}
{% endunless %}

【问题讨论】:

    标签: shopify shopify-api


    【解决方案1】:

    您可以通过使用标准 Shopify 功能来实现。

    1. 创建一个包含除礼物之外的所有产品的集合。

    2. 使用以下配置创建自动折扣:

      • 类型:买X送Y
      • 客户支出:最低购买金额

        • 金额:10英镑
        • 任何项目:特定收藏
        • 搜索并添加您在第一步中创建的集合
      • 客户得到:

        • 数量:1
        • 来自:特定产品的任何项目
        • 搜索并添加您要用作礼物的产品(不属于第一步创建的收藏的产品)
        • 折扣价:免费
        • 设置每个订单的最大使用次数:启用它并将值设置为1

    以上内容必须符合您的规范。

    然后,您仍然可以使用已创建的脚本根据购物车总数自动将礼品产品添加/删除到购物车(如果有必要)。如果客户将礼品产品的数量更改为 2 个或更多,他将按照 Shopify 中指定的标准价格获得。如果购物车符合条件,则只有一件礼品会打折。

    【讨论】:

    • 我想你不知道我怎样才能让我的代码在购物车抽屉上工作?我刚刚在一个实时网站上推出它,但该网站正在使用购物车抽屉,它没有将产品添加到购物车
    • 您需要找到购物车更新时调用的回调函数。具有 AJAX 推车的主题(包括带抽屉的主题)通常在主 JS 文件的某处具有该功能。
    • 我想我在 ajax-cart.js.liquid 文件中找到了它,但是在 wood.js.liquid 文件中也有一些功能。如何在不编辑这些文件的情况下挂钩回调?抱歉 - 我的 AJAX 非常基础
    • 我认为您可以通过向 ajax-cart.js 触发的自定义事件添加回调函数来调用您的代码。看,document.body 在添加和更改购物车项目时触发了 2 个自定义事件 - afterAddItem.ajaxCartafterChangeItem.ajaxCart。了解如何触发自定义事件以及如何为它们添加处理程序:api.jquery.com/trigger
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 1970-01-01
    • 2018-11-27
    • 2019-05-07
    • 1970-01-01
    相关资源
    最近更新 更多