在 html 文件中包含降价文件

Include markdown file in html file

在 Jekyll 中,我创建了一个布局文件 dev.html,它已经在使用其他一些 layout: default,但这并不重要。

dev.html

---
layout: default
title: Developer
---
<div>
{{ want to include page1.md }}
</div>

<div>
{{ want to include page2.md }}
</div>

现在,我有那 2 个降价页面,我需要以某种方式将其包含在 dev.html 文件中。我怎样才能做到这一点?我曾尝试使用变量 {{content}},但这会在 dev.html 文件中同时包含两个页面。

page1.md

---
layout: dev
---
page1 file content in markdown...

page2.md

---
layout: dev
---
page2 file content in markdown...

据我所知,在一个布局文件中 "load" 两个不同的页面是不可能的。

页面是否必须包含 YAML front-matter?
如果没有,我有一个不同的解决方案:使用 Jekyll 的 Includes.

包括工作的方式基本上是这样的:

  • 您在 _includes 文件夹中放置了一些 HTML 个文件,例如 foo.html
  • 您可以像这样将它们的内容包含到另一个文件中:{% include foo.html %}

唯一的问题是默认情况下,包含的文件应该是 HTML 个文件。但是可以使用 Markdown 文件作为包含,并使用 Liquid 的 markdownify 过滤器呈现 Markdown。

示例:

dev.html

(常规页面,不是布局文件)

---
layout: default
title: Developer
---
<div>
{% capture p1 %}{% include page1.md %}{% endcapture %}
{{ p1 | markdownify }}
</div>

<div>
{% capture p2 %}{% include page2.md %}{% endcapture %}
{{ p2 | markdownify }}
</div>

page1.md

(无front-matter)

page1 file content in markdown...

page2.md

(无front-matter)

page2 file content in markdown...

我会这样做:

---
layout: default
title: Developer
---
<div>
  {% assign sitepages = site.pages | where: "slug", "page1" %}
  {% for p in sitepages %}
    {{ p.content }}
  {% endfor %}
</div>

<div>
  {% assign sitepages = site.pages | where: "slug", "page2" %}
  {% for p in sitepages %}
    {{ p.content }}
  {% endfor %}
</div>