好的,所以我正在创建用于过滤产品的菜单,以使标签和子菜单不会太长。
我为我的主要类别创建了一个下拉过滤器(我添加了一个除非消除子类别标签)
然后我有一个子类别菜单,仅在未选择“所有类别”时显示。
然后为该类别中的所有标记生成一个子类别过滤器。参见下面的代码:
<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)<-被过滤的类别从列表中消失,但确实过滤产品。
如果这令人困惑,请告诉我。
答案 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>