Shopify:同时过滤多个标签

时间:2019-05-22 18:02:42

标签: shopify liquid

好的,所以我正在创建用于过滤产品的菜单,以使标签和子菜单不会太长。

我为我的主要类别创建了一个下拉过滤器(我添加了一个除非消除子类别标签)

然后我有一个子类别菜单,仅在未选择“所有类别”时显示。

然后为该类别中的所有标记生成一个子类别过滤器。参见下面的代码:

<div class="text-center">
<div class="browseby" style="display:inline;padding:20px;">
    <div class="clearfix filter" style="float:left;">
       Browse By Category <select class="coll-filter">
         <option value="">All</option>
         {% for tag in collection.all_tags %}
             {% unless tag == 'HP' or tag == 'Latex' or tag == 'Latex 570' or tag == 'Parts' or tag == 'Aqueous Media' or tag == 'Latex Media' or tag == 'Solvent Media' %}  
                 {% if current_tags contains tag %}
                    <option value="{{ tag | handle }}" selected>{{ tag }} ({{ collection.products_count }})</option>
                 {% else %}
                    <option value="{{ tag | handle }}">{{ tag }}</option>
                 {% endif %}
             {% endunless %}
         {% endfor %}
       </select>
    </div>
    {% if current_tags %}
        <div class="clearfix filter" style="float:left; padding-left:20px">

            Browse By Sub-Category <select class="coll-filter">
             <option value="">All</option>
             {% for tag in collection.tags %}
                {% unless current_tags contains tag  %}  
                    {% if current_tags contains tag %}
                        <option value="{{ tag | handle }}" selected>{{ tag }} ({{ collection.products_count }})</option>
                    {% else %}
                        <option value="{{ tag | handle }}">{{ tag }}</option>
                    {% endif %}
                {% endunless %}
             {% endfor %}



           </select>
        </div>
    {% else %}

    {% endif %}
</div>

现在的问题是,当我选择子类别过滤器时,标记未显示为选中状态。

按类别浏览显示全部,然后在下拉列表中有(全部,类别1,类别2,类别3 ..) 如果我选择了Category3,则页面将重新加载并显示“按类别浏览:Category3

“按子类别浏览”显示“全部”,然后在下拉列表中显示(全部,SubMenu1,SubMenu2,SubMenu3) 如果我选择SubMenu2,则所有产品都会过滤。 按类别浏览仍然显示:Category3 但是按子类别浏览显示:全部 在下拉菜单中,我具有(全部,子菜单1,子菜单3)<-被过滤的类别从列表中消失,但确实过滤产品。

如果这令人困惑,请告诉我。

1 个答案:

答案 0 :(得分:0)

已解决!

我在上面的代码中发现了问题。第二个过滤器中的{%除非%}标签引起了问题。除非用于过滤主类别过滤器,但最终使所选选项不可用。我的主要类别以cat-开头,子类别以sub-

开头

现在代码大部分都可以工作...使用子类别,然后再过滤回到主要类别时仍然存在问题。该网址保留了子类别,并仅添加了一个新的主要类别...

任何对这里感兴趣的人都是我的新代码:

<div class="text-center">
<div class="browseby" style="display:inline;padding:20px;">
    <div class="clearfix filter" style="float:left;">
       Browse By Category <select class="coll-filter">
         <option value="">All</option>
         {% for tag in collection.all_tags %}
            {% if tag contains 'cat-' %}
             {% assign tagName = tag | remove: 'cat-' %}         
              {% if current_tags contains tag %}
              <option value="{{ tag | handle }}" selected>{{ tagName }}</option>
              {% else %}
              <option value="{{ tag | handle }}">{{ tagName }}</option>
              {% endif %}                     
            {% endif %}
          {% endfor %}
       </select>
    </div>

        <div class="clearfix filter" style="float:left; padding-left:20px">

            Browse By Type: <select class="coll-filter">
             <option value="">All</option>
             {% for tag in collection.tags %}

                {% if tag contains 'sub-' %}
                 {% assign tagName = tag | remove: 'sub-' %}         
                  {% if current_tags contains tag %}
                  <option value="{{ tag | handle }}" selected>{{ tagName }}</option>
                  {% else %}
                  <option value="{{ tag | handle }}">{{ tagName }}</option>
                  {% endif %}                     
                {% endif %}

              {% endfor %}



           </select>
        </div>
</div>