ruby Jekyll -将内容分成两列

8cdiaqws  于 2023-08-04  发布在  Ruby
关注(0)|答案(2)|浏览(92)

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

---
layout: default
---

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

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

字符串
我使用这个作为页面模板的页面只是Markdown,它被放入<section>块中。
我正在寻找一种方法来保持我的所有页面内容在一个文件中,但有它,所以我可以定义单独的内容,得到从页面模板的<header>标签投入。
有没有办法做到这一点,并保持所有的网页内容在一个文件?

enyaitl3

enyaitl31#

您可以通过在_includes/目录中定义希望分离和重用的内容来实现这一点。
然后,您可以通过调用例如以下命令来包含它:{% include file.ext %}以包含文件名_includes/file.ext的(几乎就像您只是复制并粘贴它一样)。
参见Jekyll文档here中有关_includes的部分。

kxeu7u2r

kxeu7u2r2#

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”的布局文件中。*

要使用新的插槽,需要在front matter中添加一个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。

相关问题