如何检查数组项是否与液体中的数组项匹配(Shopify)

How to check if array item matches array item in liquid (Shopify)

谁能帮我完成这里的代码?我正在尝试通过仅显示标有与客户标签匹配的标签的产品来过滤搜索结果。

例如,客户(标记为“野马”)在前端搜索福特。 (通常 - 将展示所有福特产品。) 但是,如果客户标记为 Mustang,则只会显示标记为 Mustang 的产品。

这是我目前所拥有的;结果不为空,但不显示。

{% for item in search.results %}
    {% if item.object_type == 'product' %}
 
        <!-- for tag in product tags do -->
        {% for tag in product.tags %}
 
            <!-- If tag in product tags do -->
            {% if tag contains customer.tags %}
                {% assign product = item %}
                {% include 'product-grid-item' %}
            {% endif %}
 
        {% endfor %} 

    {% else %}
        <div class="grid__item medium-up--one-third small--one-half">
            <h2 class="h3">{{ item.title | link_to: item.url }}</h2>
            <p>{{ item.content | strip_html | truncatewords: 50 }}</p>
        </div>
    {% endif %}
{% endfor %}

我认为你的代码是正确的,除了一部分 {% if tag contains customer.tags %} 这应该是相反的,像这样:

{% if customer.tags contains tag %}

您想检查 customer.tags 是否包含特定标签,而不是该标签包含自定义标签。

这应该可以解决您的问题。

搜索结果中没有product.tags,应该是item.tags

{% for item in search.results %}
    {% if item.object_type == 'product' %}

        <!-- for tag in product tags do -->
        {% for tag in item.tags %}
 
            <!-- If tag in product tags do -->
            {% if customer.tags contains tag %}
                {% assign product = item %}
                {% include 'product-grid-item' %}
            {% endif %}
 
        {% endfor %} 

    {% else %}
        <div class="grid__item medium-up--one-third small--one-half">
            <h2 class="h3">{{ item.title | link_to: item.url }}</h2>
            <p>{{ item.content | strip_html | truncatewords: 50 }}</p>
        </div>
    {% endif %}
{% endfor %}