中间布局中未设置Jekyll front matter变量?

中间布局中未设置Jekyll front matter变量?,jekyll,Jekyll,在默认布局中,我引用了一个变量{{page.headline}},如下所示: # _layouts/default.html {{page.headline}} # index.md --- layout: default headline: Great site --- # _layouts/post.html --- layout: default headline: Great articles --- # _posts/some-post.md --- layout: post h

在默认布局中,我引用了一个变量
{{page.headline}}
,如下所示:

# _layouts/default.html
{{page.headline}}

# index.md
---
layout: default
headline: Great site
---

# _layouts/post.html
---
layout: default
headline: Great articles
---

# _posts/some-post.md
---
layout: post
headline: Great post # just for testing, and omitted when setting in post layout
---
索引中的标题变量(级别1)在特定帖子中的作用与预期相同,在级别3也一样。但是,当我在post布局中设置“Great articles”(并从
some post.md
的前面删除变量设置)时,默认布局的变量占位符中不会显示任何内容

换句话说,在帖子布局中,我看不到“伟大的文章”或“伟大的站点”,所以这就像默认布局中“伟大的站点”的初始变量设置一样——帖子布局引用了它——被覆盖,但没有被替换

然而,这在第三级使用
some post.md
——在这里设置
headline
,其中特定的帖子使用帖子布局,而帖子布局本身使用默认设置,确实会导致
page.headline
设置为“很棒的帖子”

这应该像我希望的那样吗?在基于第一个布局的第二个布局的前端设置变量?(同样奇怪的是,它是在底层工作的,帖子本身也是如此。)谢谢


(实际上,我不想在每篇文章中将其设置为第三级,因为它只是一个通用的“Articles”标题——我在这里包括它是因为它在该级别工作,如上所述。)

解决方案是通过布局引用变量,而不是页面引用变量,如前所述


因此,将版面中的变量引用为
{{layout.headline}}
,而不是
{page.headline}}
,现在可以通过继承模板的前端进行设置(即,在自己的前端指定父模板的模板:
layout:default
).

您使用的是什么版本的Jekyll?运行
bundle exec jekyll-v
检查所有我的gemz是否为当前状态。知道为什么变量没有被设置(或不会显示)吗?奇怪的是它在post级别(3-deep)工作。我猜这种行为是因为
page
变量名称空间仅用于站点中的文档。(因此在本例中可用于
index.md
某些post.md
),布局不响应该名称空间。在Jekyll 3.5中添加了一个类似的功能,其中布局中的前置变量可用于模板中。但我自己还没试过这听起来很合乎逻辑。也许我会看看这个新特性,或者用其他方法来实现。谢谢。:)