如何在 Jekyll 网站上设置默认日期?

问题描述 投票:0回答:1

如果文件名或前面的内容中没有提供日期,我希望所有页面的日期值默认为

site.time
。在 html 文件(例如布局)中使用
{{ site.time }}
可以工作,但是当我在文档的前面或默认值中设置它时,我收到此错误:

Invalid date 'site.time': An invalid date format was found in a front-matter default set: {"scope"=>{"path"=>""}, "values"=>{"date"=>"site.time"}} (Jekyll::Errors::InvalidDateError)

这是我的代码

_config.yml

defaults:
  - scope:
      path: ""
    values:
      date: "{{ site.time }}"
      # OR
      date: site.time
      # OR
      date: "{{ site.time | date: '%d %b %Y' }}"
      # OR
      date: "now"
      # OR
      date: "{{ 'now' }}"

这可能吗?如果是这样,我做错了什么?

编辑:我可以做这样的事情:

{% if page.date %}
<div>Document date: {{ page.date }}</div>
{% else %}
<div>Document date: {{ site.time }}</div>
{% endif %}

但是我每次都必须这样做,而且我宁愿只使用

page.date
和设计的默认值。

jekyll liquid
1个回答
0
投票

_config.yml
文件是静态配置文件,您不能(轻松)将要评估的代码放在那里。

最可行的方法是检查变量是否存在并回退到默认变量。 您可以使用较短的形式与液体

default
过滤器:

<div>Document date: {{ page.publication_date | default: site.time }}</div>

另外,我建议避免使用变量名称

date
,因为它已经由 Jekyll 定义并用于生成帖子的 url 路径。

© www.soinside.com 2019 - 2024. All rights reserved.