Liquid:如何将运算符的输出分配给变量?
Liquid: How to assign the output of an operator to a variable?
我正在使用 Shopify 的 Liquid 模板。我希望仅当月份恰好是十二月时才显示某些元素。由于有多个元素需要这个,所以我想在文档的顶部设置一个变量,稍后再引用它。这是我得到的有效方法:
<!-- 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 不接受括号,所以显然这行不通。没有括号也行不通。该文档有 using operators and for assigning static values to variables 的示例,但没有关于将两者结合的示例。
我可以将 |
过滤器的输出分配给一个变量,但似乎没有过滤器来涵盖每个运算符(甚至是必要的“==”),所以这并不令人满意。
有什么方法可以将运算符的输出分配给 Liquid 中的变量吗?
没有办法优雅地做到这一点,根据 this,它们不支持三元运算符。有人提到有人在尝试类似的事情。
稍微 shorter/different 的版本是:
{% assign month = 'now' | date: "%m" %}
{% liquid
case month
when '12'
assign isDecember = true
else
assign isDecember = false
endcase %}
您完全可以避免使用中间布尔标志变量 isDecember
,因为只有布尔变量的 Liquid assign
似乎在 if/endif
中不起作用。这是解决方案。
- 只需使用纯字符串:
{% assign month = 'now' | date: "%m" %}
{% if month == "12" %}
Happy Holidays
{% endif %}
- 或在
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 }}
- 还想要无名中介
isDecember
?如果您将一些虚拟文本分配放在 if/else
的任一子句中,那也可以。
{% if month == "12" %}
{% assign dummy = "summy" %}
{% assign isDecember = true %}
{% else %}
{% assign isDecember = false %}
{% endif %}
希望对您有所帮助。
我正在使用 Shopify 的 Liquid 模板。我希望仅当月份恰好是十二月时才显示某些元素。由于有多个元素需要这个,所以我想在文档的顶部设置一个变量,稍后再引用它。这是我得到的有效方法:
<!-- 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 不接受括号,所以显然这行不通。没有括号也行不通。该文档有 using operators and for assigning static values to variables 的示例,但没有关于将两者结合的示例。
我可以将 |
过滤器的输出分配给一个变量,但似乎没有过滤器来涵盖每个运算符(甚至是必要的“==”),所以这并不令人满意。
有什么方法可以将运算符的输出分配给 Liquid 中的变量吗?
没有办法优雅地做到这一点,根据 this,它们不支持三元运算符。有人提到有人在尝试类似的事情。
稍微 shorter/different 的版本是:
{% assign month = 'now' | date: "%m" %}
{% liquid
case month
when '12'
assign isDecember = true
else
assign isDecember = false
endcase %}
您完全可以避免使用中间布尔标志变量 isDecember
,因为只有布尔变量的 Liquid assign
似乎在 if/endif
中不起作用。这是解决方案。
- 只需使用纯字符串:
{% assign month = 'now' | date: "%m" %}
{% if month == "12" %}
Happy Holidays
{% endif %}
- 或在
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 }}
- 还想要无名中介
isDecember
?如果您将一些虚拟文本分配放在if/else
的任一子句中,那也可以。
{% if month == "12" %}
{% assign dummy = "summy" %}
{% assign isDecember = true %}
{% else %}
{% assign isDecember = false %}
{% endif %}
希望对您有所帮助。