Исключить товар с тегом из всех жидких страниц коллекции

Я все еще новичок в Shopify, поэтому мои знания об этом очень ограничены.

Я создал страницу, на которой хочу показывать определенные товары с тегом «экспорт». Эти продукты никогда не должны появляться на странице коллекции (siteurl/коллекция/все).

Я пытался исключить продукты с тегом из шаблона коллекции, но это оставляет пробелы только на страницах, которые он исключает.

Исключить товар с тегом из всех жидких страниц коллекции

Это мой текущий код:

{% for product in collection.products %}
    {% if product.tags contains 'export' %}{% continue %}{% endif %}
       My code for displaying the product
{% endfor %}

Я также пробовал:

{% for product in collection.products %}
    {% unless product.tags contains 'export' %}
       My code for displaying the product
    {% endunless %}
{% endfor %}

Я думаю, что мне нужно будет установить условия, прежде чем я назову свои продукты, чтобы моя нумерация страниц не нарушалась. Есть ли способ сделать это в Shopify?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Что вам нужно знать, так это то, что Liquid выполняет начальное действие (for product in collection.products), прежде чем выполнять следующее.

Таким образом, цикл for захватывает все продукты, а затем оператор if удаляет эти продукты. К сожалению, разбивка на страницы уже выполнила разделение продукта во время цикла for, поэтому, когда вы удаляете продукт, он удаляется из результата разбиения на страницы.

Обойти это, к сожалению, невозможно. Единственное реальное решение — создать свою собственную коллекцию all, а затем использовать умные фильтры, чтобы добавить все, кроме товаров, помеченных xyz.

Спасибо @ConduciveMammal, я боялся, что это может быть так. Я действительно надеялся, что есть какой-то способ установить условия перед forloop.

LadyX 17.03.2022 07:21

Этот код должен работать для вас, он элементарный и включает в себя некоторый код, который можно исключить, но он поможет вам понять, как он работает.

КОД ДЛЯ ВАШЕГО ШАБЛОНА КОЛЛЕКЦИИ:

{% for product in collection.products %}
    <!-- Set the default value of "product_show" to "true" -->
    {% assign product_show = true %}

    <!-- We iterate all the tags inside the product checking if one of them EXACTLY matches with "Export" -->
    {% for tag in product.tags %}

        {% if tag == "export" %}
            <!-- If we find an "export" tag then we set product_show to "false" -->
            {% assign product_show = false %}

            <!-- When we find the label we exit the "FOR" loop -->
            {% break %}
        {% endif %}
    {% endfor %}

    <!-- If the product has "product_show" then it will not be shown and will continue with the next product -->
    {% if product_show == "true" %}
        CODIGO DEL PRODUCTO
    {% endif %}
{% endfor %}

Спасибо за ваш комментарий, я пробовал, и я боюсь, что ConduciveMammal объяснил ниже. Shopify уже рассчитывает продукты для отображения на странице при вызове for product in collection.products, и поэтому все, что мы добавляем после этого, только создает пустые места на странице продукта.

LadyX 17.03.2022 07:18

Другие вопросы по теме