提问人:Robert 提问时间:1/24/2020 更新时间:3/4/2021 访问量:6718
Liquid:如何将运算符的输出分配给变量?
Liquid: How to assign the output of an operator to a variable?
问:
我正在使用 Shopify 的 Liquid 模板。我希望某些元素仅在月份恰好是 12 月时才会显示。由于有多个元素需要它,我想在文档顶部设置一个变量,稍后再参考。这是我得到的有效方法:
<!-- At the top of the page -->
{% assign month = 'now' | date: "%m" %}
{% if month == "12" %}
{% assign isDecember = true %}
{% else %}
{% assign isDecember = false %}
{% endif %}
<!-- Only show in December -->
{% if isDecember %}
Happy Holidays
{% endif %}
这有效(为了测试,我将“12”更改为当前月份),但它非常丑陋。在大多数语言中,我会做这样的事情:
{% assign isDecember = (month == "12") %}
Liquid 不接受括号,所以显然这是行不通的。没有括号也不起作用。该文档提供了使用运算符和为变量分配静态值的示例,但没有关于将两者组合在一起的示例。
我可以将过滤器的输出分配给变量,但似乎没有过滤器来覆盖每个运算符(甚至必要的“==”),所以这并不令人满意。|
有没有办法将运算符的输出分配给 Liquid 中的变量?
答:
5赞
RustyDev
1/25/2020
#1
没有办法优雅地做到这一点,据此,它们不会支持三元运算符。有人提到有人尝试类似的事情。
稍微短一点/不同的版本是:
{% assign month = 'now' | date: "%m" %}
{% liquid
case month
when '12'
assign isDecember = true
else
assign isDecember = false
endcase %}
0赞
Valentine Shi
3/4/2021
#2
您可以完全避免使用中间布尔标志变量,因为只有布尔变量的 Liquid 似乎在 .以下是解决方案。isDecember
assign
if/endif
- 只需使用纯字符串:
{% assign month = 'now' | date: "%m" %}
{% if month == "12" %}
Happy Holidays
{% endif %}
- 或者在 s 中使用纯字符串赋值(不是布尔值赋值):
if
{% if month == "12" %}
{% assign phrase = "Happy Holidays" %}
{% else %}
{% assign phrase = "Happy usual time of the year" %}
{% endif %}
Now my message to you is: {{ phrase }}
- 还想要 unsing 中介吗?如果您在任一子句中放置一些虚拟文本赋值,那也将起作用。
isDecember
if/else
{% if month == "12" %}
{% assign dummy = "summy" %}
{% assign isDecember = true %}
{% else %}
{% assign isDecember = false %}
{% endif %}
希望能有所帮助。
评论
0赞
Michael Sotnikov
11/16/2023
内在不尊重外在条件。所以它总是渲染到最后assign
assign
评论