当我尝试将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的范围规则感到困惑......
答案 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.products
或collections
?