Shopify - составить список доступных вариантов для отображения - PullRequest
0 голосов
/ 01 апреля 2019

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

Я пробовал фильтр добавления строки, но он включает последний элемент.

Я пытался использовать {% if forloop.last%}, но код будет включать вариант, даже если он недоступен.

Вот мой код:

{% if product.variants.size > 0 and product.available %}
    {% unless product.has_only_default_variant %}
      <span class="sizes-available">
        Sizes in stock:

            {% for variant in product.variants %}
              {% if variant.available %}

                  {{ variant.title | append: ', '}}

              {% endif %}
            {% endfor %}

      </span>
    {% endunless %}
  {% endif %}

Если у продукта есть три варианта (размер A, размер B, размер C), а размер C отсутствует, мой желаемый результат: размер A, размер B

Заранее благодарим за помощь в этом.

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Вы пропускаете неизвестное количество элементов, которое может включать первый или последний элемент в списке - поэтому мы не можем полагаться на forloop.first или forloop.last, так как любой из них может быть пропущенным элементом .

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

{%- assign empty_list = true -%}
{%- for variant in product.variants -%}
  {%- comment -%}Skip the variant if it's not available{%- endcomment -%}
  {%- unless variant.available -%}
    {%- continue -%}
  {%- endunless -%}

  {%- comment -%}Print a comma unless our list is empty{%- endcomment -%}
  {%- unless empty_list -%},{%- endunless -%}
  {%- assign empty_list = false -%}

  {%- comment -%}Now print our new entry{%- endcomment -%}
  <span class="variant-name"> {{ variant.title }}</span>
{%- endfor -%}

(Примечание. В вышеприведенном примере я включил в теги Liquid для удаления пробелов -, чтобы удалить все лишние разрывы строк / табуляции / пробелы между тегами. Подробнее см. https://shopify.github.io/liquid/basics/whitespace/ подробности)

0 голосов
/ 01 апреля 2019

Найден ответ ... должен быть массив для использования фильтра массива соединений.

Обновленный код:

{% if product.variants.size > 0 and product.available %}
    {% unless product.has_only_default_variant %}
      <span class="sizes-available">
        Sizes in stock:
          {% capture list %}
            {% for variant in product.variants %}
              {% if variant.available %}    
                  {{ variant.title }}
              {% endif %}
            {% endfor %}
          {% endcapture %}

          {% assign array = list | split: ' ' %}

          {{ array | join: ', ' }}   
      </span>
    {% endunless %}
  {% endif %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...