Liquid:如何结合两个"UNLESS"条件?
Liquid: How to combine two "UNLESS" conditions?
我在 Shopify liquid 工作,我正在寻找一种清晰而简单的方法来 运行 代码(在本例中初始化 jquery),仅当两个条件都不成立时。
- 模板不是购物车
- 该模板不是具有多个产品款式的产品模板。
在这些情况下,我之前已经用更简单的 IF- 条件初始化了 JQuery。所以现在我想避免在这些情况下再次初始化 JQuery。
我可以用这个吗:
{% unless template contains 'cart' or template contains 'product' and product.variants.size > 1 %}
{{ 'jquery-2.2.3.min.js' | asset_url | script_tag }}
{% endunless %}
是否清楚“and”指的是 'product'-模板?所以像 If X != true OR (Y != true AND Z = true)
?
否则,我是否需要使用以下命令来确保 JQuery 没有被初始化两次?
{% unless template contains 'cart' %}
{% unless template contains 'product' and product.variants.size > 1 %}
{{ 'jquery-2.2.3.min.js' | asset_url | script_tag }}
{% endunless %}
{% endunless %}
{% unless template contains 'product' and product.variants.size > 1 %}
{% unless template contains 'cart' %}
{{ 'jquery-2.2.3.min.js' | asset_url | script_tag }}
{% endunless %}
{% endunless %}
您的解决方案
首先,您使用嵌套代码提出的第二个替代方案将以两种形式工作:
- 使用购物车检查外面和里面的产品
- 使用产品检查外部和内部购物车
一般机制
Shopify Liquid 从右到左评估 {% if %}
和 {% unless %}
语句中的 and
和 or
等运算符,例如,如果您有:
<div>
{% unless false or false and true %}
{{"The evaluated condition is false"}}
{% else %}
{{"The evaluated condition is true"}}
{% endunless %}
</div>
这将输出 {{"The evaluated condition is false"}}
因为:
- false 和 true 的计算结果为 false
- false 或 false 的计算结果为 false
{% unless false %}
输出 {{"The evaluated condition is false"}}
我认为单个 {% unless %}
语句更简洁并且会避免嵌套,但您可以选择任何一种解决方案。
我在 Shopify liquid 工作,我正在寻找一种清晰而简单的方法来 运行 代码(在本例中初始化 jquery),仅当两个条件都不成立时。
- 模板不是购物车
- 该模板不是具有多个产品款式的产品模板。
在这些情况下,我之前已经用更简单的 IF- 条件初始化了 JQuery。所以现在我想避免在这些情况下再次初始化 JQuery。
我可以用这个吗:
{% unless template contains 'cart' or template contains 'product' and product.variants.size > 1 %}
{{ 'jquery-2.2.3.min.js' | asset_url | script_tag }}
{% endunless %}
是否清楚“and”指的是 'product'-模板?所以像 If X != true OR (Y != true AND Z = true)
?
否则,我是否需要使用以下命令来确保 JQuery 没有被初始化两次?
{% unless template contains 'cart' %}
{% unless template contains 'product' and product.variants.size > 1 %}
{{ 'jquery-2.2.3.min.js' | asset_url | script_tag }}
{% endunless %}
{% endunless %}
{% unless template contains 'product' and product.variants.size > 1 %}
{% unless template contains 'cart' %}
{{ 'jquery-2.2.3.min.js' | asset_url | script_tag }}
{% endunless %}
{% endunless %}
您的解决方案
首先,您使用嵌套代码提出的第二个替代方案将以两种形式工作:
- 使用购物车检查外面和里面的产品
- 使用产品检查外部和内部购物车
一般机制
Shopify Liquid 从右到左评估 {% if %}
和 {% unless %}
语句中的 and
和 or
等运算符,例如,如果您有:
<div>
{% unless false or false and true %}
{{"The evaluated condition is false"}}
{% else %}
{{"The evaluated condition is true"}}
{% endunless %}
</div>
这将输出 {{"The evaluated condition is false"}}
因为:
- false 和 true 的计算结果为 false
- false 或 false 的计算结果为 false
{% unless false %}
输出{{"The evaluated condition is false"}}
我认为单个 {% unless %}
语句更简洁并且会避免嵌套,但您可以选择任何一种解决方案。