【问题标题】:Shopify - Free Product with PurchaseShopify - 购买免费产品
【发布时间】:2019-08-21 12:06:30
【问题描述】:

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

问题:用户可以添加多个可能不来自指定集合的​​项目,然后可以删除指定集合产品,免费产品将留在购物车中。即,用户可以添加产品以使用免费商品填充购物车,然后添加另一个可能为 5 美元的商品,而该商品则填充可能为 50 美元或更多的免费商品。作为回报,用户购买 5 美元产品可获得免费产品。

下面的 sn-p 有效,但我希望它更强大。目前,它通过将“产品手柄”替换为购买时提供的免费礼物来工作。仅当购物车中存在免费产品和指定集合“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 也会从购物车中移除,即使有其他产品。

【问题讨论】:

  • 以简约的方式,如果购物车的总价格低于某个值,假设购物车价值低于 50 美元并且免费产品被移除,我希望将免费产品从购物车中移除。所以我尝试使用 {% unless cart.total_price
  • A) 这样的事情很容易被黑客攻击,所以要注意 B) 在 Checkout 按钮上添加一个点击监听器,并检查购物车是否正常 C) 请注意 Shopify Plus 不会受到这些废话的影响,但使用起来更贵
  • @DavidLazar 您是否有其他选择可以将带有特定产品的免费商品添加到购物车?不幸的是,Shopify Plus 现在不在预算之内,希望在未来。

标签: javascript shopify liquid


【解决方案1】:

尝试将 Shopify Discounts 自动折扣功能与您的脚本一起使用,并为您免费赠送的产品提供价值。以下是创建自动折扣的方法:

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

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

【讨论】:

  • 其实,这是个好主意!它总是我忽略的简单过程。谢谢!
猜你喜欢
  • 2014-03-13
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多