【问题标题】:Jekyll front matter variable not being set in intermediate layout?Jekyll 前端问题变量未在中间布局中设置?
【发布时间】:2017-07-30 16:31:31
【问题描述】:

在我的默认布局中,我引用了一个变量{{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。但是当我在帖子布局中设置“伟大的文章”(并从some-post.md 的前面的内容中删除变量设置)时,默认布局的变量占位符中没有呈现任何内容。

换句话说,在帖子布局中,我没有看到“伟大的文章”“伟大的网站”,所以它就像默认布局中“伟大的网站”的初始变量设置-- 帖子布局引用的 -- 正在被覆盖,但没有被替换。

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

这应该按照我希望的方式工作吗?在基于第一个布局的第二个布局的前面设置一个变量? (同样奇怪的是,它在底层工作,与帖子本身一起工作。)谢谢。

(实际上我不想在每个帖子的第三级设置它,因为它只是一个通用的“文章”标题——我在这里包括它是因为它在那个级别工作,如上所述.)

【问题讨论】:

  • 您使用的是什么版本的 Jekyll?运行bundle exec jekyll -v检查
  • 我所有的 gemz 都是最新的。知道为什么没有设置变量(或不会显示)吗?奇怪的是它在后期级别(3-deep)工作。
  • 我猜这种行为是因为 page 变量命名空间仅适用于站点中的文档。 (因此在示例中与 index.mdsome-post.md 一起使用。)并且布局不响应该命名空间。
  • Jekyll 3.5 中添加了一个类似的功能,在模板中可以使用布局前端变量。但我自己没试过..
  • 这听起来合乎逻辑。也许我会看到新功能,或者以其他方式完成。谢谢。 :)

标签: jekyll


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2016-05-21
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2019-02-13
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多