杰基尔 - 将内容分成两列

时间:2012-06-24 22:47:59

标签: ruby jekyll liquid github-pages

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

---
layout: default
---

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

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

将我用作网页模板的网页只是Markdown,会被放入<section>区块。

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

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

2 个答案:

答案 0 :(得分:5)

您可以通过定义您希望在_includes/目录中单独和重复使用的内容来实现。

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

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

答案 1 :(得分: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%}标记中,如果设置了值,则调用include。