Collections Shopify收藏页面上的变体过滤器

Collections Shopify收藏页面上的变体过滤器,collections,filter,shopify,product,variant,Collections,Filter,Shopify,Product,Variant,我正在尝试在我的收藏页面中设置过滤器 到目前为止,我成功地设置了一个很棒的自定义标记过滤器,如下所示: <div class="collection-sort"> {% assign tags = 'Black, Slate, Military Green' | replace: ' ,', ',' | replace: ', ', ',' | split: ',' %} <select id="FilterBy" class="collect

我正在尝试在我的收藏页面中设置过滤器

到目前为止,我成功地设置了一个很棒的自定义标记过滤器,如下所示:

                <div class="collection-sort">

{% assign tags = 'Black, Slate, Military Green' | replace: ' ,', ',' | replace: ', ', ',' | split: ',' %}
<select id="FilterBy" class="collection-sort__input">
  <option value="/collections/{{ collection.handle }}">Choose Color</option>
  {% for tag in tags %}
  {% if current_tags contains tag %}
  <option value="/collections/{{ collection.handle }}/{{tag}} " selected>{{ tag }}</option>
  {% elsif collection.all_tags contains tag %}
  <option value="/collections/{{ collection.handle }}/{{tag}}">{{ tag }}</option>
  {% endif %}
  {% endfor %}
</select>
</div>

{%assign tags='Black,Slate,millity Green'| replace:',',','| replace:',',',',','| split:','%}
选择颜色
{标记%中的标记的%s}
{%如果当前_标记包含标记%}
{{tag}}
{%elsif集合。所有_标记都包含标记%}
{{tag}}
{%endif%}
{%endfor%}
但是,我希望有一个动态大小过滤器(使用Variant)

为此,我尝试了以下方法:

<div class="collection-sort">


  <span value="">Choose Size</span>

          {% for variant in collection.variants %}
         {% if variant.available %}
  <span value="{{ variant.id }}" >{{ variant.size}}</span>
{% else %}
  <span value="{{ variant.id }}" >{{ variant.size }}</span>
 {% endif %}
        {% endfor %}

</div>

选择大小
{collection.variants%}
{%if variant.available%}
{{variant.size}
{%else%}
{{variant.size}
{%endif%}
{%endfor%}
但我的下拉列表中没有显示任何内容。我的所有产品都已输入尺寸作为产品选项/变型

有人能做到这一点吗?这将是非常有帮助的


非常感谢

您的代码有太多问题,无法输出任何内容

让我们把它们一个一个地切除

集合没有变体 使用这行代码:

{%for collection.variants%}

您的目标是集合中的变体,但集合中没有变体。产品确实有变体

所以这里的逻辑是不正确的

变体选项以不同的方式存储 使用以下代码:
{{variant.size}
您正在尝试获取名为size的变量选项,但它不能以这种方式工作

您必须使用对象
option1
option2
option3
获取选项。如果您的变量选项大小是第一个,您将通过以下方式获得:
variant.option1

坏处 由于Shopify的局限性,您试图实现的目标在液体中是不可能实现的

为了实现这一点,您需要循环所有产品,并采用其变体选项,只过滤唯一的产品,因为每个请求有50个产品的硬限制,这是一场失败的战斗

变通办法(有几个) 所有的解决方法都要求您创建一个
链接列表
,该列表将保存您必须手动输入的所有可用尺寸

1) 最常见的一种方法是使用标签表示大小并按标签过滤,因为集合可以直接按标签过滤产品

2) 使用将基于大小存储产品的集合,并在筛选特定大小时重定向到这些集合

3) 通过检查每个产品是否具有选定的值并使用分页作为加载下一页的方式,创建一个无限AJAX请求,根据您的过滤器拉取产品

这些是不使用应用程序的主要选项


祝你好运

谢谢你的解释!!这是我所想的,不可能达到我想要的方式,很高兴得到证实。那我就按标签走走:)谢谢大家!