我有一个小型的Jekyll供电网站,它使用默认的Liquid模板引擎。我正在将其转换为使用Gekyll,它会使用Git时间戳覆盖标准page.date
模板变量,因此我需要覆盖前面事项中声明的page.original_date
值的日期对于较旧的帖子。
在我的模板中,我希望能够这样做:
<span class="date">{% page.original_date or page.date | date: "%B %-d, %Y" }}</span>
这似乎不起作用,所以我这样做:
<span class="date">
{% if page.original_date %}
{{ page.original_date | date: "%B %-d, %Y" }}
{% else %}
{{ page.date | date: "%B %-d, %Y" }}
{% endif %}
</span>
这不是什么大问题,但是很麻烦,无法寻找更好的解决方案。 Liquid中的逻辑是否允许像我第一次尝试那样的回退变量?
答案 0 :(得分:3)
在寻找三元运算符方面,我认为这是您可以使用的最简单的语法:
{% assign original_date = page.original_date %}
{% unless original_date %}{% assign original_date = page.date %}{% endunless %}
{% unless original_date %}{% assign original_date = date: "%B %-d, %Y" %}{% endunless %}
不太可读或简洁,但至少它有效!
答案 1 :(得分:2)
{% page.original_date or page.date | date: "%B %-d, %Y" }}
逻辑对我来说不正确。
or
运算符,但它是一个条件OR运算符,与其他普通编程语言一样执行逻辑或运算。
但是,你想要的是一个后备的东西,比如三元运算符。
例如,与C#的?? Operator或?: Operator
类似{% page.original_date ?? page.date | date: "%B %-d, %Y" }}
{% page.original_date ? page.original_date : page.date | date: "%B %-d, %Y" }}
不幸的是,我不认为它存在于Liquid中。请在Liquid的问题跟踪器中查看此Ternary operator support isssue。