为通过 site.pages.content 访问的页面应用布局

Apply layout for pages accessed via site.pages.content

我正在尝试使用代码在 html 中呈现特定的 md 文件:

{% assign subheader = site.pages | where: "title", "subheader" | first %}

{{ subheader.content }}

它可以工作,但我的布局不符合要求。它是否按预期工作?有没有办法应用这个布局?

布局在 "current page" 的上下文中应用。

在您的示例中,如果 {{ subheader.content }} 已插入到 base.md 中,则定义了 layout: base,然后 {{ subheader.content }} 呈现 作为“base.md”的一部分“=43=],因此将成为 它的一部分布局(_layouts/base.html).

没有 out-of-the-box 方法来呈现使用多个布局呈现的页面的各个部分。

唯一可能的途径是继承另一个布局。

例如, 假设我有一个 "base" 布局,其中包含以下内容:

[...]
<header>
  <div id="parent-element">
    <div class="btn">foo</div>
    {{ content }}
  </div>
</header>
[...]

和另一个布局 subheader:

---
layout: base
---

<ul id="greek">
  <li><a href="#">alpha</a></li>
  <li><a href="#">beta</a></li>
  <li><a href="#">gamma</a></li>
</ul>
{{ content }}

最后是 使用 子标题布局的 "page.md":

---
layout: subheader
---

<ul id="fruits">
  <li><a href="#">apples</a></li>
  <li><a href="#">oranges</a></li>
  <li><a href="#">bananas</a></li>
</ul>

那么,生成的"page.html"将是:

[...]
<header>
  <div id="parent-element">
    <div class="btn">foo</div>
    <ul id="greek">
      <li><a href="#">alpha</a></li>
      <li><a href="#">beta</a></li>
      <li><a href="#">gamma</a></li>
    </ul>
    <ul id="fruits">
      <li><a href="#">apples</a></li>
      <li><a href="#">oranges</a></li>
      <li><a href="#">bananas</a></li>
    </ul>
  </div>
</header>
[...]