Я все еще новичок в 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?
Что вам нужно знать, так это то, что Liquid выполняет начальное действие (for product in collection.products
), прежде чем выполнять следующее.
Таким образом, цикл for захватывает все продукты, а затем оператор if
удаляет эти продукты. К сожалению, разбивка на страницы уже выполнила разделение продукта во время цикла for, поэтому, когда вы удаляете продукт, он удаляется из результата разбиения на страницы.
Обойти это, к сожалению, невозможно.
Единственное реальное решение — создать свою собственную коллекцию all
, а затем использовать умные фильтры, чтобы добавить все, кроме товаров, помеченных xyz
.
Этот код должен работать для вас, он элементарный и включает в себя некоторый код, который можно исключить, но он поможет вам понять, как он работает.
КОД ДЛЯ ВАШЕГО ШАБЛОНА КОЛЛЕКЦИИ:
{% 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
, и поэтому все, что мы добавляем после этого, только создает пустые места на странице продукта.
Спасибо @ConduciveMammal, я боялся, что это может быть так. Я действительно надеялся, что есть какой-то способ установить условия перед forloop.