如果文件名或前面的内容中没有提供日期,我希望所有页面的日期值默认为
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
和设计的默认值。
_config.yml
文件是静态配置文件,您不能(轻松)将要评估的代码放在那里。
最可行的方法是检查变量是否存在并回退到默认变量。 您可以使用较短的形式与液体
default
过滤器:
<div>Document date: {{ page.publication_date | default: site.time }}</div>
另外,我建议避免使用变量名称
date
,因为它已经由 Jekyll 定义并用于生成帖子的 url 路径。