【发布时间】:2013-07-21 13:52:32
【问题描述】:
我正在尝试在 Jekyll 中重建一个博客,但遇到了一个简单的任务。
如果我有以下一组模板:
default.html:
{{ head }}
{{ content }}
frontpage.html:
---
layout: default
---
{% capture head %}
Frontpage
{% end %}
{{ content }}
index.html:
---
layout: frontpage
---
Other stuff
我原以为{% capture head %} 会将变量传递给布局。但似乎只有 Front Matter 中的变量实际上是作为 page.variable_name 传递的。
有没有办法将capture-d var 传递给 Jekyll 中的布局?
我想我可以为 frontpage 和 normal_page 制作 2 种不同的布局,这将替换布局中的整个 {{head}}{{content}} 块。但这就像 html 的两倍,所以如果可能的话,我宁愿用capture 解决它。
【问题讨论】:
-
我不确定你想在这里完成什么。为什么不能使用包含?为什么要首先捕获整个头部?更多的上下文会很好。
-
因为我想根据页面从模板中替换主布局中的头部部分
-
你为什么不简单地把改变的东西放在前面?
-
不想在 Front Matter 中保留 html,现在我添加了另一个模板。
-
我同意这很有用。我想要一个包含两列的页面,一个主列和一个带有附加页面内容的侧边栏。不能在 html 标签中使用 markdown,所以我不能只将我的两个 markdown 块包装在列标记中。我想到的另一个选择是使用
capture,就像尼克在上面尝试做的那样,提供一个可供任何页面使用的sidebar区域。很遗憾,这不受支持,因为它使编写多元素 Markdown 页面非常尴尬。
标签: jekyll liquid liquid-layout jekyll-extensions