Shopify:调用swatch.liquid';颜色';关于收集液体和产品循环液体

Shopify:调用swatch.liquid';颜色';关于收集液体和产品循环液体,shopify,Shopify,我无法找到解决问题的方法。我想在产品价格下面显示一个简单的“更多颜色”选项 我一直在测试代码,例如: {% if product.variants 'color' > 1 %} Has more than one variant. {% else %}Only one variant. {% endif %} 但我一点运气都没有。所有的东西要么叫“有更多…”要么叫“只有一个…”而不管样本数 我正在编辑从集合调用的产品循环.liquid。liquid 它只为每个产品输

我无法找到解决问题的方法。我想在产品价格下面显示一个简单的“更多颜色”选项

我一直在测试代码,例如:

  {% if product.variants 'color' > 1 %}  
  Has more than one variant.
  {% else %}Only one variant.
  {% endif %}
但我一点运气都没有。所有的东西要么叫“有更多…”要么叫“只有一个…”而不管样本数

我正在编辑从集合调用的
产品循环.liquid
。liquid

它只为每个产品输出“仅一个变体”或“有多个变体”,而不考虑样本/颜色计数


谢谢你的帮助。

这句话毫无意义:

{% if product.variants 'color' > 1 %}
相反,您希望检查变体的选项集,如果您检测到一个选项集为“颜色”,并且您有多个变体,那么很明显,您处于多个颜色区域

{% assign has_more_colors = false %}
{% for option in product.options %}
    {% if option contains 'color' and product.variants.length > 1 %}
       {% assign has_more_colors = true %}
    {% endif %} 
{% endfor %}

所以现在你可以做任何你需要做的事。。。由于您现在知道a)有一个名为“颜色”的选项,b)有多个变体,因此有多个颜色…

以下代码片段已发布到Shopify Board上。它解决了这个问题:

{% assign option_title = "Color" %}
{% assign option_index = "" %}
{% assign option_values = "" %}

{% for option in product.options %}
{% if option == option_title %}
{% assign option_index = forloop.index %}
{% endif %}
{% endfor %}

{% for variant in product.variants %}
{% assign variant_option_value = "" %}
{% if option_index == 1 %}
{% assign variant_option_value = variant.option1 | handleize %}
{% elsif option_index == 2 %}
{% assign variant_option_value = variant.option2 | handleize %}
{% elsif option_index == 3 %}
{% assign variant_option_value = variant.option3 | handleize %}
{% endif %}
{% assign option_values = option_values | append:"," | append:variant_option_value %}
{% endfor %}

{% assign option_values = option_values | remove_first:"," | split:"," | uniq %}

{% if option_values.size > 1 %}
 <a href="{{ url }}" class="more-colors" style="border: 1px solid black;">MORE COLORS</a>
{% else %}
{% endif %}  
{%assignoption\u title=“Color”%}
{%assign option_index=”“%}
{%assign option_values=”“%}
{product.options%中的选项为%s}
{%if option==option_title%}
{%assign option_index=forloop.index%}
{%endif%}
{%endfor%}
{product.variants%中的变量为%0}
{%assign variant_option_value=”“%}
{%if option_index==1%}
{%assign variant_option_value=variant.option1| handleize%}
{%elsif选项_索引==2%}
{%assign variant_option_value=variant.option2| handleize%}
{%elsif选项_索引==3%}
{%assign variant_option_value=variant.option3|handleize%}
{%endif%}
{%assign option_values=option_values | append:,“| append:变量_option_value%}
{%endfor%}
{%assign option_values=option_values | remove_first:,“| split:,”| uniq%}
{%if option_values.size>1%}
{%else%}
{%endif%}

我把它放到了
产品循环中
,不知道为什么它没有输出任何东西。这似乎是可行的,但我是否需要创建一个具有更多颜色的变量,或者这是液体标记的一部分?我是新来的。。泰克斯。您只需检查新的变量。{%if拥有更多的颜色%}更多的颜色

{%else%}生活在一个单色世界中

{%endif%}仍然无法在具有多种颜色的产品上正确使用它。也许是因为只有一个尺码?也就是说,钱包:1号,多种颜色。下面是我们的
swatch.liquid
标记的要点(如果有帮助的话):