For loop 检查产品是否也存在于Shopify主题的不同集合中

For loop 检查产品是否也存在于Shopify主题的不同集合中,for-loop,if-statement,collections,shopify,For Loop,If Statement,Collections,Shopify,我有一个collection.list.liquid文件 这会在商店的所有产品中循环 {% for product in collection.products %} 我创建了另一个产品集合,该集合巧妙地命名为“特惠产品”,带有url和句柄“/特惠产品” 在我的FOR循环中,我想做一个IF语句,简单地询问FOR循环中的每个产品是否也在这个侧集合“特价产品”中。如果这是真的,则显示一小段代码,它本质上是一个标签,上面写着“特价!” 我孩子气地尝试过(但失败了): {%if product.col

我有一个collection.list.liquid文件

这会在商店的所有产品中循环

{% for product in collection.products %}
我创建了另一个产品集合,该集合巧妙地命名为“特惠产品”,带有url和句柄“/特惠产品”

在我的FOR循环中,我想做一个IF语句,简单地询问FOR循环中的每个产品是否也在这个侧集合“特价产品”中。如果这是真的,则显示一小段代码,它本质上是一个标签,上面写着“特价!”

我孩子气地尝试过(但失败了):

{%if product.collections包含“特价商品”%}
特别的
提供 {%endif%}
我现在正在努力想另一种方法,如果我能做到的话

以下是我的完整产品FOR loop:

{% for product in collection.products %}
    <div class="single-product">
        <a href="{{ product.url | within: collection }}" class="box-link"></a>
        <div class="product-image" style="background-image: url({{ product.featured_image.src | img_url: 'large' }});">
        </div>
        {% if product.collections contains 'special-offers-products' %}     
            <div class="special-offer-banner">
                Special<br/>
                Offer!
            </div>
        {% endif %}
        <div class="product-information">
            <p class="product-title">{{ product.title }}</p>
            <p class="product-vendor">{{ product.vendor }}</p>
            <p class="product-price">{{ product.price | money }}</p>
            {% unless product.available %}
                <br><strong>sold out</strong>
            {% endunless %}
            <div class="product-buttons">
                {% include 'view-button' %}
                {% comment %}{% include 'add-to-cart-button' %}{% endcomment %}
            </div>
        </div>
    </div>
{% else %}
    <p>no matches</p>
{% endfor %}
{%用于集合中的产品。产品%}
{%如果product.collections包含“特价商品”%}
特别的
提供 {%endif%}

{{product.title}

{{product.vendor}

{{product.price | money}

{%product.available%}
售罄 {%end除非%} {%include'查看按钮“%” {%comment%}{%include'添加到购物车按钮'%}{%endcomment%} {%else%} 没有火柴

{%endfor%}
如何正确检查当前正在循环的产品是否也放置在另一个集合中

编辑
我不想知道如何使用“特价产品”集合创建单独的产品集合,这需要在相同的“所有产品”集合循环中完成。

您实际上非常接近

让您困惑的是,
product.collections
返回的是collections对象,而不是collection句柄

所以你可以这样做

{%- assign collection_handles = product.collections | map: 'handle' -%}
{% if collection_handles contains 'special-offers-products' %}     
    <div class="special-offer-banner">
        Special<br/>
        Offer!
    </div>
{% endif %}
{%-assign collection_handles=product.collections|map:'handle'-%}
{%如果集合_句柄包含“特价商品”%}
特别的
提供 {%endif%}

这应该与您当前的逻辑一致。

您实际上非常接近

让您困惑的是,
product.collections
返回的是collections对象,而不是collection句柄

所以你可以这样做

{%- assign collection_handles = product.collections | map: 'handle' -%}
{% if collection_handles contains 'special-offers-products' %}     
    <div class="special-offer-banner">
        Special<br/>
        Offer!
    </div>
{% endif %}
{%-assign collection_handles=product.collections|map:'handle'-%}
{%如果集合_句柄包含“特价商品”%}
特别的
提供 {%endif%}

这应该符合您当前的逻辑。

首先,非常感谢您的贡献!然而,这似乎不适合我。在循环中创建的每个产品的输出与在“所有产品”集合列表中创建的产品不使用相同的url和句柄,因此它使用该句柄。不是想击落你,你可能是对的,我的实现很糟糕。@JasonIsMyName不太理解你的问题。我只从产品中获取集合,并使用map过滤器创建一个数组,然后检查该数组中是否包含“特价产品”。我没有针对产品句柄或url,或者我不理解这里的问题。你能更详细地解释一下吗?我当然会试试!我要看看我一直在努力的方向,记住你的代码剪贴。所以我可以给你一些有用的东西好吧。。我将改变我的方法,因为这是现实的(我认为)正确的方法。而不是根据我添加到此销售集合的产品创建销售集合。我将创建一个集合,该集合基于价格大于0.01的比较创建。理论上,这将是所有在售产品,对吗?从技术上讲,我应该能够使用if价格<销售价格。运行IF,对吗?首先-非常感谢您的贡献!然而,这似乎不适合我。在循环中创建的每个产品的输出与在“所有产品”集合列表中创建的产品不使用相同的url和句柄,因此它使用该句柄。不是想击落你,你可能是对的,我的实现很糟糕。@JasonIsMyName不太理解你的问题。我只从产品中获取集合,并使用map过滤器创建一个数组,然后检查该数组中是否包含“特价产品”。我没有针对产品句柄或url,或者我不理解这里的问题。你能更详细地解释一下吗?我当然会试试!我要看看我一直在努力的方向,记住你的代码剪贴。所以我可以给你一些有用的东西好吧。。我将改变我的方法,因为这是现实的(我认为)正确的方法。而不是根据我添加到此销售集合的产品创建销售集合。我将创建一个集合,该集合基于价格大于0.01的比较创建。理论上,这将是所有在售产品,对吗?从技术上讲,我应该能够使用if价格<销售价格。运行IF,对吗?