4

我有一个基本的布局页面模板:

---
layout: default
---

<header class="sidebar">
    {{ page.title }}
</header>

<section class="content">
    {{ content }}
</section>

我使用它作为页面模板的页面只是被放入<section>块中的 Markdown。

<header>我正在寻找一种方法将我的所有页面内容保存在一个文件中,但拥有它,以便我可以定义从页面模板放入标签的单独内容。

有没有办法做到这一点并将所有页面的内容保存在一个文件中?

4

2 回答 2

6

您可以通过定义您希望在_includes/目录中分离和重用的内容来做到这一点。

然后,您可以通过调用来包含它,例如:{% include file.ext %}包含文件名的_includes/file.ext(几乎就像您只是复制并粘贴它一样)。

请参阅此处_includes与 Jekyll 文档中的相关部分。

于 2012-06-25T02:13:00.280 回答
5

YAML Front Matter 可用于直接存储页面的附加内容。这是通过创建自定义键/值变量来完成的。布局/模板使用流动标签来检查辅助内容是否可用。如果是这样,它会得到输出。否则,将跳过该部分。

下面是一个布局模板示例,用于检查是否myvar1设置了一个名为的自定义变量:

---
layout: default
---

<header class="sidebar">

    <h2>{{ page.title }}</h2>

    {% if page.myvar1 %}
        <p>Secondary content here: {{ page.myvar1 }}</p>
    {% endif %}

</header>

<section class="content">
    {{ content }}
</section>

注意:为了匹配您的原始示例,此布局文件调用父“默认”布局。对于此示例,上述内容位于名为“_layouts/nested_layout.html”的布局文件中。

要使用新插槽,myvar1需要在前面添加一个变量,如下所示:

---
layout: nested_layout
title: This is the post test layout
myvar1: More here <strong>including bold text</strong>.
---

And here is the page content: The quick brown fox jumps over the lazy dog.

处理该页面后,将显示辅助内容。如果您创建另一个没有 的页面,则myvar1模板的该部分不会呈现任何内容。

您可以根据需要向页面添加任意数量的自定义变量。这些值可以包括 HTML,如本例所示。(它在 Jekyll 0.11.2 中对我有用。)如果您有很多代码要添加(而不是容易放在一行上的代码),或者如果您想要打开相同的内容/关闭多个页面,您可以使用自定义变量作为标志。然后,在 {% if %} 标记中,如果设置了值,您将调用包含。

于 2012-06-25T16:32:41.680 回答