Shopify:如何在循环之外获取loop.index的值?

时间:2014-11-28 22:01:30

标签: for-loop scope shopify liquid

当我尝试将forloop索引(或其他任何内容)分配给for循环中的变量,然后在循环外部(之后)使用它时,分配的值将丢失。下面的代码是我尝试过的大约20种不同方法之一。他们都没有工作。我只需要知道x是否包含y(因此变量可以是布尔值或整数或任何东西)。

{% assign has_y = 0 %}
{% for x in collection %} 
  {% if x contains y %}
    <span style="display: none">{{ has_y | plus: 1 }}</span>
  {% endif %}
{% endfor %}
{% if has_y < 1 %}
   THIS DOESN'T WORK AS EXPECTED
{% endif %}

我对Shopify的范围规则感到困惑......

1 个答案:

答案 0 :(得分:3)

问题是您输出{{ has_y | plus: 1 }},但没有在for循环中为has_y分配任何内容。

试试这个:

{% assign has_y = 0 %}

{% for x in collections %} 
  {% if x contains y %}
    {% assign has_y = has_y | plus: 1 %}
    <span style="display: none">{{ has_y }}</span>
  {% endif %}
{% endfor %}

{% if has_y < 1 %}
   ...
{% endif %}

或者,如果您想使用布尔值:

{% assign has_y = false %}

{% for x in collections %} 
  {% if x contains y %}
    {% assign has_y = true %}
    <span style="display: none">{{ has_y }}</span>
  {% endif %}
{% endfor %}

{% if has_y == false %}
  ...
{% endif %}

此外,您可能需要检查for循环{% for x in collection %}collection是一个对象。也许你打算迭代collection.productscollections