我正在使用Shopify。我在收集页面中,我得到所有带标签计数的过滤器,如
All Products
Apple(4)
Banana(2)
Orange(1)
Mango(8)
现在,当我点击任何标签时(例如我点击香蕉),它将显示香蕉产品。
现在我的问题是点击标签,它正在改变标签数量。
All Products
Apple(0)
Banana(2)
Orange(0)
Mango(4)
我正在使用以下代码
{% for tag in collection.all_tags %}
{% assign products_count = 0 %}
{% for product in collection.products %}
{% if product.tags contains tag %}
{% assign products_count = products_count | plus: 1 %}
{% endif %}
{% endfor %}
<a class="filter__link" href="/collections/{% if collection.handle != blank %}{{ collection.handle }}{% else %}all{% endif %}/{{ tag | handleize }}"{% if current_tags contains tag %} selected="selected" id="tag_active"{% endif %}>{{ tag }} ({{products_count }})</a>
{% endfor %}
提前致谢。
答案 0 :(得分:1)
看起来您缺少的步骤是第一行here:
{% assign collection = collections.all %}
您正在迭代当前集合,因此当您点击标记时结果会发生变化。
如果您没有带有句柄all
的集合,可以按照this process创建一个集合:
All
。修改强>
这解决了点击代码链接时产品数量发生变化的问题:
{% for tag in collection.all_tags %}
{% assign products_count = 0 %}
{% for product in collections[collection.handle].products %}
{% if product.tags contains tag %}
{% assign products_count = products_count | plus: 1 %}
{% endif %}
{% endfor %}
<a class="filter__link" href="/collections/{% if collection.handle != blank %}{{ collection.handle }}{% else %}all{% endif %}/{{ tag | handleize }}"{% if current_tags contains tag %} selected="selected" id="tag_active"{% endif %}>{{ tag }} ({{products_count }})</a>
{% endfor %}
关键部分是:
{% for product in collections[collection.handle].products %}
看起来,当您使用collections/collection_1/tag_1
之类的网址按标记进行过滤时,collection.products
也会被所选标记过滤。上面的行看起来有点乱,但它似乎返回了整套产品。
答案 1 :(得分:0)
正如我在评论中所说,问题来自你的二级循环:
{% for product in collection.products %}
仅访问当前视图,而不访问完整的集合产品。
我没有对它进行过测试,但我想这是一次尝试:
{% assign whole_collection = collections[collection.handle] %}
{% for product in whole_collection.products %}
{% if product.tags contains tag %}
{% assign products_count = products_count | plus: 1 %}
{% endif %}
{% endfor %}
解释,像这样的代码{{collections ['the-handle']。url}}允许访问任何特定的集合及其属性。
HTH
备忘录:如果您的收藏品超过50件,这将无法正常工作。