根据尺寸将产品分配给集合

Assign products to collection based on size

我创建了一个新的产品系列模板,我想将尺寸变体中尺寸为 'XL' 的所有产品分配给它。

我从为每个产品创建尺寸数组开始,但现在我被卡住了。

{% assign sizes = '' %}
{% for variant in product.variants %}
{% if variant.available %}
{% assign sizes = sizes | append: variant.options[0] | append: '_' %}
{% endif %}
{% endfor %}
{% assign sizesArr = sizes | split: '_' | uniq %}

接下来我应该怎么做才能只显示包含 'XL' 的产品?

这取决于你所说的所有产品是什么意思。

默认情况下,集合最多可以显示 50 个产品,但您可以用分页对象覆盖它。

因此,如果您的产品少于 50 个,您可以这样做。

{%- for product in collection.products -%}
  {%- assign show_product = false -%}
  {%- for option in product.options_with_values -%}
    {%- for value in option.values -%}
      {%- assign value_handle = value | handle -%}
      {%- if value_handle == 'xl' -%}
        {%- assign show_product = true -%}
      {%- endif -%}
    {%- endfor -%}
  {%- endfor -%}

  {%- if show_product -%}
    Add your product here
  {%- endif -%}
{%- endfor -%}

如果您有超过 50 种产品,则需要将上述代码包装在分页对象中:

{% paginate collection.products by 9999 %}
  {%- for product in collection.products -%}
    {%- assign show_product = false -%}
    {%- for option in product.options_with_values -%}
      {%- for value in option.values -%}
        {%- assign value_handle = value | handle -%}
        {%- if value_handle == 'xl' -%}
          {%- assign show_product = true -%}
        {%- endif -%}
      {%- endfor -%}
    {%- endfor -%}

    {%- if show_product -%}
      Add your product here
    {%- endif -%}
  {%- endfor -%}
{% endpaginate %}

但是此请求会对服务器造成影响并降低您的网站速度。所以请也考虑这个问题。