当我尝试将 forloop 索引(或其他任何内容)分配给 for 循环中的变量,然后在循环外部(之后)使用它时,分配的值会丢失。下面的代码是我尝试过的大约 20 种不同方法之一。他们都没有工作。我只需要知道 x 是否包含 y(因此变量可以是 bool 值或整数或任何值)。
{% 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 的范围规则感到困惑...
最佳答案
问题是您正在输出 {{ 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 %}
或者,如果您想使用 bool 值:
{% 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.products
或 collections
?
关于for-loop - Shopify:如何在循环外获取forloop.index的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27196441/