显示购物车中不存在的集合中的项目 Shopify

Display Items in Collection that Do Not Exist In Shopping Cart Shopify

我正在尝试遍历购物车中的商品并生成加售 div 商品不在购物车中。下面是我到目前为止的代码,但是我 运行 在将两个项目添加到购物车时遇到问题 运行 循环两次生成 html 两次。关于如何解决它的任何想法?我被难住了。

{% for item in cart.items %} // iterates over items in cart

  {% if item.product.id == 4456879040188 %} // checks if product id matches in item in cart
    <div class="upsell-pop" style="text-align:center; width: 100%;">
      <h4>Frequently bought together</h4>
      {% for prod in collections.upsell.products %} // iterates products in collection upsell
        {% unless prod.handle contains "product-name" %} // shows only prods that do not contain url handle
            <div>
              <span class="upsell-title">{{ prod.title }}</span>
              <span class="upsell-price">{{ prod.metafields["meta"]["promo"] }} {{ prod.price | money }}</span>
              <a href="{{prod.url}}"><img src="{{ prod.featured_image | img_url: '200x' }}" /></a>
              <a class="btn-product" href="{{prod.url}}">View Product</a>
            </div>
        {% endunless %}
      {% endfor %}
    </div>
  {% endif %}

{% endfor %}

另一个想法是以某种方式检查产品是否不在购物车中以替换现有的 "unless" 语句,但不确定如何编码。

{% unless cart.items exist then %} // I know this is not correct syntax
     <div>
          <span class="upsell-title">{{ prod.title }}</span>
          <span class="upsell-price">{{ prod.metafields["meta"]["promo"] }} {{ prod.price | money }}</span>
          <a href="{{prod.url}}"><img src="{{ prod.featured_image | img_url: '200x' }}" /></a>
          <a class="btn-product" href="{{prod.url}}">View Product</a>
      </div>
{% endunless %}

在我看来,这里有两个步骤。

首先,捕获您的购物车内容以获取字符串以与循环追加销售时进行比较 collection。这可能是这样的:

{%- capture cart_items -%}
  {% for item in cart.items %}
    {{ item.product.handle }}{% unless forloop.last %} , {% endunless %}
  {% endfor %}
{%- endcapture -%}

然后遍历你的collection,同时在每次迭代时检查你的字符串不包含当前产品的句柄:

{% for product in collections['upsell'].products %}
  {% unless cart_items contains product.handle %}
    {{ product.title }}
  {% endunless %}
{% endfor %}

备注:

代码段 1 => 在 line_item 中(这里称为项目,因为它写起来更短)object 您可以访问产品 object 属性:item.product.product_attr_needed

Snippet 2 => 要使用其句柄直接访问 collection object,您必须使用 collections + 包含 collection 句柄 + 属性的方括号。这里 'upsell' 是您加售的句柄 collection.

未测试,但这应该有效。

HTH