单击产品标签时标签计数会自动更改

时间:2018-04-11 07:17:36

标签: tags shopify

我正在使用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 %}

提前致谢。

2 个答案:

答案 0 :(得分:1)

看起来您缺少的步骤是第一行here

{% assign collection = collections.all %}

您正在迭代当前集合,因此当您点击标记时结果会发生变化。

如果您没有带有句柄all的集合,可以按照this process创建一个集合:

  1. 转到产品&gt;集合。
  2. 点击添加收藏。
  3. 创建集合:
    1. 为您的收藏品添加标题All
    2. 在“条件”部分中,选择“根据条件自动选择产品”。
    3. 设置产品条件“产品价格大于$ 0”。
  4. 保存
  5. 修改

    这解决了点击代码链接时产品数量发生变化的问题:

    {% 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件,这将无法正常工作。