Shopify Theme Development |ЕСЛИ в цикле коллекции FOR |Проверка наличия товара в другой коллекции - PullRequest
0 голосов
/ 21 октября 2019

У меня вопрос, который поражает мой мозг, и я не могу получить ценный ресурс в другом месте;был бы очень признателен всем, кто мог бы помочь мне.

У меня есть файл collection.list.liquid.

Это перебирает ВСЕ продукты в магазине.

{% for product in collection.products %}

Я создал еще одну коллекцию продуктов, которые находятся в коллекции, называемой «Продукты со специальными предложениями», с URL-адресом и ручкой «/special-offers-products'.

В моем цикле FOR я хочусоставьте оператор IF, который просто спрашивает каждый продукт в цикле FOR, входит ли он в эту дополнительную коллекцию «Продукты со специальными предложениями». Если это ИСТИНА, отобразите небольшой блок кода, который по сути является тегом «Специальное предложение!».

По-детски я пытался (и не смог):

{% if product.collections contains 'special-offers-products' %}     
    <div class="special-offer-banner">
        Special<br/>
        Offer!
    </div>
{% endif %}

Я сейчасизо всех сил пытаясь даже придумать другой способ, которым я мог бы выполнить этот ЕСЛИ.

Вот мой полный цикл ПО для продукта:

{% 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 %}

Пожалуйста, могу я попросить кого-нибудь посоветовать мне, какправильно проверить, находится ли продукт, который в данный момент зацикливается, также в другой коллекции?

Любая помощь будет принята с благодарностью ...

РЕДАКТИРОВАТЬ: Я не хочу знать, как создать отдельную коллекцию продуктов, используя коллекцию «Продукты со специальными предложениями», это нужно сделать в рамках одной и той же петли сбора ВСЕХ продуктов.

Спасибо, Джейсон.

1 Ответ

0 голосов
/ 21 октября 2019

На самом деле вы были очень близки.

Вас смущает то, что product.collections возвращает объект коллекций, а не дескриптор коллекции.

Так что вы можете сделать это вместо этого.

{%- assign collection_handles = product.collections | map: 'handle' -%}
{% if collection_handles contains 'special-offers-products' %}     
    <div class="special-offer-banner">
        Special<br/>
        Offer!
    </div>
{% endif %}

Это должно работать с вашей текущей логикой.

...