Shopify - 购买免费产品

Shopify - Free Product with Purchase

代码段允许在指定集合中的产品也存在时将免费产品应用到购物车。如果删除指定集合中的另一产品,免费产品将从购物车中删除。

问题:用户可以添加多个项目,这些项目可能都不是来自指定的集合,然后可以删除指定的集合产品,免费产品将留在购物车中。即,用户可以添加产品以使用免费商品填充购物车,然后添加与该商品相比价格可能为 5 美元的另一商品以填充可能为 50 美元或更多的免费商品。在 return 中,用户购买 5 美元产品可免费获得产品。

下面的代码片段有效,但我希望它更健壮。目前,它的工作原理是将 'product-handle' 替换为购买时提供的免费礼物。如果购物车中存在免费产品和来自指定集合 'collection-handle' 的产品,它只会填充免费产品。如果集合中的产品被移除,则免费项目也将从购物车中移除。

问题:可以添加多个项目,并删除包含免费项目和结帐的原始产品。

正在寻找从项目中删除免费产品的解决方案,除非购物车中存在指定集合中的产品。

{% assign product = all_products['PRODUCT-HANDLE'] %}

{% unless cart.item_count == 0 or product.empty? or product.variants.first.available == false %}

  {% assign variant_id = product.variants.first.id %}



{% assign found = false %}
{% unless cart.item_count < 1 %}
  {% for line_item in cart.items %}
    {% for collection in line_item.product.collections %}
      {% if collection.handle == 'COLLECTION_HANDLE' %} 
        {% assign found = true %}
        {% break %}
      {% endif %}
    {% endfor %}
  {% endfor %}


  <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 ) && {{found}} == true ) {

     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>

{% endunless %}
{% endunless %}

我希望结果是,如果将产品 A 添加到购物车,那么购物车将填充免费提供的产品 B。如果产品 A 随后被删除或不存在于购物车中,那么产品 B 也将从购物车中删除即使存在其他产品。

尝试将 Shopify Discounts 自动折扣功能与您的脚本一起使用,并对您免费赠送的产品进行评估。以下是创建自动折扣的方法:

  1. 转到折扣->创建折扣->自动折扣
  2. 折扣类型select买 X 送 Y
  3. Select Collection 或您想赠送免费产品的产品
  4. 填写您要创建的所有其他必要详细信息和规则

现在,只要满足规则,购物车中的产品就会免费,如果不满足规则,就会恢复原价。