Группировка фильтров коллекций — настройка пользовательского интерфейса

#shopify #liquid

#Shopify #жидкость

Вопрос:

Мы хотели бы настроить фильтрацию групп коллекций. В настоящее время групповая фильтрация группирует и отображает все теги товаров, у которых есть подчеркивание в названии тега.

пример: Brand_Premium

Однако мы хотели бы показывать группу фильтров только тогда, когда в группе доступно более одного фильтра:

пример: Все товары на данной странице коллекции являются одним и тем же брендом. В этом случае мы не хотим показывать группу фильтров для бренда, поскольку есть только один вариант.

 {%- capture tag_icon -%}
  <span class="filter-icon--checkbox">
    {%- include 'icon-checkbox' -%}
  </span>
{%- endcapture -%}

{% for cat_item in cat_array %}
  {% assign tag_count = 0 %}
  <h3 class="productgrid--sidebar-title--small">
    {{ cat_item }}
  </h3>
  <ul class="productgrid--sidebar-item filter-group">
    {% for tag in collection.all_tags %}
      {% assign cat = tag | split: '_' | first %}
      {% if cat != tag and cat_item == cat %}
        {% assign tag_count = tag_count | plus: 1 %}
        {%- capture tag_text -%}
          {{- tag_icon -}}

          <span class="filter-text">
            {{ tag | remove_first: cat | remove_first: '_' }}
          </span>
        {%- endcapture -%}

        {% assign filter_class = 'filter-item' %}
        {%- if current_tags contains tag -%}
          {% assign filter_class = filter_class | append: ' filter-item--active' %}
        {%- else -%}
          {% assign filter_class = filter_class | append: ' filter-item--inactive' %}
        {%- endif -%}

        {%- if tag_count > tag_limit -%}
          {% assign filter_class = filter_class | append: ' filter-item--hidden' %}
        {%- endif -%}

        <li
          class="{{ filter_class }}"
          data-tag-advanced
          data-group="{{ cat_item }}"
          data-handle="{{ tag | handle }}"
          {% if tag_count > tag_limit %}data-hidden-default{% endif %}
          {% if current_tags contains tag %}aria-current="true"{% endif %}
        >
          {% if current_tags contains tag %}
            {{ tag_text | link_to_remove_tag: tag }}
          {% else %}
            {{ tag_text | link_to_add_tag: tag }}
          {% endif %}
        </li>
      {% endif %}
    {% endfor %}

    {% if tag_count > tag_limit %}
      <li class="filter-item">
        <a class="filter-text--link" href="#" data-filter-toggle="false">
          {{ 'general.general.see_more' | t }}
        </a>
      </li>
    {% endif %}
  </ul>
<hr />
{% endfor %}
  

Комментарии:

1. Вы можете проверить, tag | handleize не совпадает ли это с collection.handle , и продолжить

2. Спасибо за ответ. Я не уверен, что понимаю предлагаемое решение. Можете ли вы внести немного больше ясности?