在 Liquid 中使用“或”作为可选模板变量

Chr*_*son 0 templates liquid jekyll

我有一个由 Jekyll 驱动的小型站点,它使用默认的 Liquid 模板引擎。我正在将它转换为使用Gekyll,它使用page.dateGit 时间戳覆盖标准模板变量,因此我需要使用page.original_date在前面声明的值覆盖日期,仅适用于较旧的帖子。

在我的模板中,我希望能够做到这一点:

<span class="date">{% page.original_date or page.date | date: "%B %-d, %Y" }}</span>
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用,所以我这样做:

<span class="date">
{% if page.original_date %}
    {{ page.original_date | date: "%B %-d, %Y" }}
{% else %}
    {{ page.date | date: "%B %-d, %Y" }}
{% endif %}
</span>
Run Code Online (Sandbox Code Playgroud)

这没什么大不了的,但很麻烦,可以寻找更好的解决方案。Liquid 中的逻辑是否允许像我第一次尝试那样使用后备变量?

Cor*_*ory 5

在寻找三元运算符方面,我认为这是您可以使用的最简单的语法:

{% 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 %}
Run Code Online (Sandbox Code Playgroud)

不是很可读或简洁,但至少它有效!