Tags Shopify-如何将标签的显示顺序与集合中的产品显示顺序相匹配?

Tags Shopify-如何将标签的显示顺序与集合中的产品显示顺序相匹配?,tags,shopify,liquid,custom-lists,Tags,Shopify,Liquid,Custom Lists,希望有人能帮上忙,因为我对Shopify的液态代码格式还比较陌生 最近,我在集合页面上为使用标签的产品过滤器实现了多个下拉排序框。 基于此“如何”: 所有这些都按预期工作,但是我在订购其中一个过滤器的标签时遇到了麻烦。我希望标签的显示顺序与集合中产品的当前顺序相匹配(已从后端手动订购)-请参见图 处理此特定下拉列表的代码: <div class="four-columns"> Package size: <select class=&quo

希望有人能帮上忙,因为我对Shopify的液态代码格式还比较陌生

最近,我在集合页面上为使用标签的产品过滤器实现了多个下拉排序框。 基于此“如何”:

所有这些都按预期工作,但是我在订购其中一个过滤器的标签时遇到了麻烦。我希望标签的显示顺序与集合中产品的当前顺序相匹配(已从后端手动订购)-请参见图

处理此特定下拉列表的代码:

<div class="four-columns">
    Package size:
    <select class="coll-filter" id="sizeFilter">
      <option class="size-all" value="">All</option>
      {% for tag in collection.all_tags %}
        {% if tag contains 'size-' %}
         {% assign tagName = tag | remove: 'size-' %}         
          {% if current_tags contains tag %}
          <option class="{{tag}}" value="{{ tag | handle }}" selected>{{ tagName }}</option>
          {% else %}
          <option class="{{tag}}" value="{{ tag | handle }}">{{ tagName }}</option>
          {% endif %}                     
        {% endif %}
      {% endfor %}
    </select>
  </div>  

包装尺寸:
全部的
{%用于集合中的标记。所有_标记%}
{%如果标记包含“大小-”%}
{%assign tagName=tag | remove:'size-'%}
{%如果当前_标记包含标记%}
{{标记名}}
{%else%}
{{标记名}}
{%endif%}
{%endif%}
{%endfor%}

我的主要缺点是我不能“硬编码”列表,因为有多个集合具有不同的包大小。非常感谢您的任何帮助。谢谢。

如果你想根据产品的顺序,那么你需要使用产品,而不是抓住所有标签

所以它会变成这样:

{% assign all_tags = '' %}
{% for product in collection.products %}
  {% for tag in product.tags %}
    {% if tag contains 'size-' %}
      {% assign all_tags = all_tags | append: tag | append: ',' %}
    {% endif %}
  {% endfor %}
{% endfor %}
{% assign all_tags_unique = all_tags | split: ',' | uniq %}

<select>
  {% for tag in all_tags_unique %}
    {% assign tagName = tag | remove: 'size-' %}         
    {% if current_tags contains tag %}
      <option class="{{tag}}" value="{{ tag | handle }}" selected>{{ tagName }}</option>
    {% else %}
    <option class="{{tag}}" value="{{ tag | handle }}">{{ tagName }}</option>
    {% endif %} 
  {% endfor %}
</select>
{%assign all_tags='''%}
{%用于集合中的产品。产品%}
{product.tags%中的标记的%s}
{%如果标记包含“大小-”%}
{%assign all_tags=all_tags | append:tag | append:','%}
{%endif%}
{%endfor%}
{%endfor%}
{%assign all_tags_unique=all_tags | split:','| uniq%}
{所有_标记中的标记为%u唯一%}
{%assign tagName=tag | remove:'size-'%}
{%如果当前_标记包含标记%}
{{标记名}}
{%else%}
{{标记名}}
{%endif%}
{%endfor%}
在这里,我们将循环当前产品并将它们的每个标记推送到变量
{%assign all_tags='''%}

完成产品后,我们将使用分割器对其进行分割,在我们的例子中,分割器是
,并将添加唯一的过滤器,该过滤器将删除阵列中的任何重复(如果产品或重复上有多个尺寸)

最后,您将循环新创建的标记数组
all\u tags\u unique

就这些

PS:请记住,您有50多种产品,需要增加分页才能全部获得



请记住,这不是经过测试的代码,因此可能有一两个错误,但逻辑是存在的。:)

这是完美的作品,感谢您的详细描述以及。帮助我更好地了解未来的事情。非常感谢您的帮助。我在其中一个收藏中发现了重复的标签。做了一些挖掘,结果是一个流动的语法问题。“unique”应该修改为“uniq”。@CamDH-yep你是对的,我警告说我没有测试它。;)答案已更新。