Shopify: фильтр по нескольким тегам одновременно - PullRequest
0 голосов
/ 22 мая 2019

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

Я создал раскрывающийся фильтр для своих основных категорий (я добавил разве что для исключения тегов категорий подуровня)

У меня есть меню подкатегорий, которое отображается, только если «Все категории» не выбраны.

Затем генерируется фильтр подкатегорий для всех тегов в этой категории. Ниже приведен код:

<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, все продукты будут отфильтрованы. Обзор по категориям по-прежнему показывает: Категория3 Но просмотр по подкатегориям показывает: все Внутри выпадающего меню (Все, SubMenu1, SubMenu3) <- фильтруемая категория исчезает из списка, но фильтрует товары. </p>

Если это сбивает с толку, дайте мне знать.

1 Ответ

0 голосов
/ 22 мая 2019

РАЗРЕШЕНО !!

Я обнаружил проблему в приведенном выше коде.Тег {% исключением%} во втором фильтре вызывал проблему.Если не было, чтобы отфильтровать фильтр основной категории, но в итоге сделал выбранную опцию недоступной.Мои основные категории начались с категории cat-, а категории подуровней начинаются с под-

. Теперь код работает в основном ... По-прежнему возникают проблемы при использовании подкатегории и последующей фильтрации обратно в основную категорию.,URL содержит подкатегорию и просто добавляет новую основную категорию ...

В любом случае, для тех, кто заинтересован, вот мой новый код:

<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>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...