Нужна помощь в отображении связанных продуктов по тегу, а не по коллекции - PullRequest
0 голосов
/ 03 мая 2019

У меня есть сотни продуктов в коллекции, я хочу сгруппировать элементы в этой коллекции с похожими тегами

Как показать все товары с соответствующими тегами в соответствующем слайдере?

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

{% if settings.show_related_product %}
  <div id="related_item" class="home-carousel">

    {% if collection == null or collection.handle == 'frontpage' or collection.handle == 'all' %}
      {% assign found_a_collection = false %}

      {% for c in product.collections %}
        {% if found_a_collection == false and c.handle != 'frontpage' and c.handle != 'all' and c.all_products_count > 1 %}
        {% assign found_a_collection = true %}
        {% assign collection = c %}
        {% endif %}
      {% endfor %}
    {% endif %}

    {% if collection and collection.products_count > 1 %}

      {% if settings.heading_related_product != blank %}
      <h4>{{ settings.heading_related_product }}</h4>
      {% endif %}

      <div class="related-items">
        {% assign current_product = product %}
        {% assign current_product_found = false %}
        {% for product in collection.products limit: settings.related_product_number %}
          {% if product.handle == current_product.handle %}
            {% assign current_product_found = true %}
          {% else %}
            {% unless current_product_found == false and forloop.last %}
            <div class="related-item">
              {% include 'product-item' with collection.handle %}
            </div>
            {% endunless %}
          {% endif %}
        {% endfor %}

      </div>
    {% endif %}
  </div>
{% endif %}

{% if settings.show_wear_with and settings.wear_with_col != blank%}
  <div id="wear_with_item" class="home-carousel">


    {% assign wearwithCol = collections[settings.wear_with_col] %}
    {% assign wearwithNum = settings.wear_with_number %}

    {% if settings.heading_wear_with != blank %}
    <h4>{{ settings.heading_wear_with }}</h4>
    {% endif %}

    <div class="wear-with-items">
      {% for product in wearwithCol.products limit: wearwithNum %}

      <div class="wear-with-item">
        {% include 'product-item' %}
      </div>

      {% endfor %}
    </div>

  </div>
{% endif %}

1 Ответ

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

Когда вам нужно отфильтровать товары по тегам, лучшее решение - использовать JS, поскольку у жидкости нет собственного способа сделать это.

Так что лучший способ - нацелиться на /collections/all/TAGперейдите на страницу и получите продукты с запросом AJAX, поскольку они будут отфильтрованы по тегам на этой странице.

Что-то вроде этого:

fetch('/collections/all/SOME_TAG')
  .then(r => r.json())
  .then(data => /* Do Something With The data */)

Если вы действительно очень хотите использовать только жидкий код, чем вы можете выполнить следующее "взломать":

{% paginate collections.all.products by 9999 %}
 {% for _product in collections.all.products %}
   {% if _product.tags contains 'SOME_TAG' %}
     Do something here
   {% endif %}
 {% endfor %}
{% endpaginate %}

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

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