如何在特定日期显示 Jekyll Collection 项? (流式语法问题?)
How do I show a Jekyll Collection item on a specific date? (Liquid syntax issue?)
我想我遇到的最基本的问题是为什么在 Liquid if
语句的开头使用数字似乎不起作用。
这个有效:
{% if quip.show == "foo" %}
这不是:
{% if quip.show == "1" %}
…但当然还有很多,这就是我要说的。
我有一个 Jekyll Collection 的小妙语,我想在网站在特定日期构建时显示。日常状态类型的东西。我用这些文件设置了一个 collection,制作了我的模板,一切都很棒。问题是在指定日期一次只出现一个。
我的第一个想法是将 date: 2020-06-17
添加到前面的内容,然后 运行 检查是否与今天的日期匹配,但这似乎与 Jekyll 隐含日期冲突。所以我将 front matter 标记更改为 show: 2020-06-17
只是为了排除故障。
所以现在我有一个 for 循环,它显示了我所有的讽刺:
{% for quip in site.quips %}
(this is where my HTML is and it loops and renders each collection file perfectly)
{% if quip.show == "2020-06-17" %}
It's working. (this is where the quip HTML will go but I'm isolating it)
{% endif %}
{% endfor %}
这都是手动的,前面的字面意思是 show: 2020-06-17
但显然我希望它能自动获取日期,稍后会详细介绍。 …但它不打印 "It's working."。奇怪的是,当我在我的一个 collection 文件中将前面的内容更改为 show: foo
时,它确实显示 "It's working"。此外,当我将其更改为数字 1
时,它不起作用。所以 Jekyll 似乎不喜欢将数字作为 ``==` 中的第一个字符。
所以基本上这就是我想做的:
我有一个使用这个的变量集:
{% capture my_var %}{{ "now" | date: "%Y-%m-%d"}}{% endcapture %}
我在我的页面顶部添加了这个来获取日期(在其他一些事情似乎不起作用之后)
…这清楚地输出到 2020-06-17(通过调用变量并查看 HTML 输出确认。)
那么我想把它放在我的 collection 循环中:
{% if quip.show == "{{ my_var }}" %}
It's Working
{% endif %}
({{ my var }} 周围的引号让我有些困惑,因为如果它们不存在,编译器会抱怨,但没有它们,事情就无法可靠地工作。那里没有线索,不是主要问题但我需要解决的问题)。
我的意思是,我的想法是用这个日期检测器 if 语句而不是打印 "It's working" 来包装我所有的俏皮话模板,但这将是一个很好的概念证明。
我真的不反对使用 Jekyll 内置的日期前言甚至文件名——每天只有一个。我已经尝试了很多东西,但出于某种原因,当我在 ==
语句中使用数值时,我无法让它工作。
如有任何帮助,我们将不胜感激。
发生这种情况是因为前端是 YAML,而 YAML 可能比您想象的更聪明。
date: 2020-06-17
Is an actual valid date for YAML.
因此,如果我 JSON 打印在前面定义的 date
,那么它会显示为日期:
{{ quip.date | json }}
2020-06-17 00:00:00 +0200
因此,如果您想比较封面和当天的日期,则必须设置这两个日期的格式。
{% assign now = "now" | date: "%Y-%m-%d" %}
{% assign show = quip.show | date: "%Y-%m-%d" %}
{% if show == now %}
<p class="fresh-from-the-day">quip.title</p>
{% endif %}
我想我遇到的最基本的问题是为什么在 Liquid if
语句的开头使用数字似乎不起作用。
这个有效:
{% if quip.show == "foo" %}
这不是:
{% if quip.show == "1" %}
…但当然还有很多,这就是我要说的。
我有一个 Jekyll Collection 的小妙语,我想在网站在特定日期构建时显示。日常状态类型的东西。我用这些文件设置了一个 collection,制作了我的模板,一切都很棒。问题是在指定日期一次只出现一个。
我的第一个想法是将 date: 2020-06-17
添加到前面的内容,然后 运行 检查是否与今天的日期匹配,但这似乎与 Jekyll 隐含日期冲突。所以我将 front matter 标记更改为 show: 2020-06-17
只是为了排除故障。
所以现在我有一个 for 循环,它显示了我所有的讽刺:
{% for quip in site.quips %}
(this is where my HTML is and it loops and renders each collection file perfectly)
{% if quip.show == "2020-06-17" %}
It's working. (this is where the quip HTML will go but I'm isolating it)
{% endif %}
{% endfor %}
这都是手动的,前面的字面意思是 show: 2020-06-17
但显然我希望它能自动获取日期,稍后会详细介绍。 …但它不打印 "It's working."。奇怪的是,当我在我的一个 collection 文件中将前面的内容更改为 show: foo
时,它确实显示 "It's working"。此外,当我将其更改为数字 1
时,它不起作用。所以 Jekyll 似乎不喜欢将数字作为 ``==` 中的第一个字符。
所以基本上这就是我想做的:
我有一个使用这个的变量集:
{% capture my_var %}{{ "now" | date: "%Y-%m-%d"}}{% endcapture %}
我在我的页面顶部添加了这个来获取日期(在其他一些事情似乎不起作用之后)
…这清楚地输出到 2020-06-17(通过调用变量并查看 HTML 输出确认。)
那么我想把它放在我的 collection 循环中:
{% if quip.show == "{{ my_var }}" %}
It's Working
{% endif %}
({{ my var }} 周围的引号让我有些困惑,因为如果它们不存在,编译器会抱怨,但没有它们,事情就无法可靠地工作。那里没有线索,不是主要问题但我需要解决的问题)。
我的意思是,我的想法是用这个日期检测器 if 语句而不是打印 "It's working" 来包装我所有的俏皮话模板,但这将是一个很好的概念证明。
我真的不反对使用 Jekyll 内置的日期前言甚至文件名——每天只有一个。我已经尝试了很多东西,但出于某种原因,当我在 ==
语句中使用数值时,我无法让它工作。
如有任何帮助,我们将不胜感激。
发生这种情况是因为前端是 YAML,而 YAML 可能比您想象的更聪明。
date: 2020-06-17
Is an actual valid date for YAML.
因此,如果我 JSON 打印在前面定义的 date
,那么它会显示为日期:
{{ quip.date | json }}
2020-06-17 00:00:00 +0200
因此,如果您想比较封面和当天的日期,则必须设置这两个日期的格式。
{% assign now = "now" | date: "%Y-%m-%d" %}
{% assign show = quip.show | date: "%Y-%m-%d" %}
{% if show == now %}
<p class="fresh-from-the-day">quip.title</p>
{% endif %}