GitHub Pages 上的 Jekyll:在另一个 markdown 文件中包含 markdown

Posted

技术标签:

【中文标题】GitHub Pages 上的 Jekyll:在另一个 markdown 文件中包含 markdown【英文标题】:Jekyll on GitHub Pages: include markdown in another markdown file 【发布时间】:2017-06-17 10:11:02 【问题描述】:

我在 GitHub 页面上使用 kramdown 和 Jekyll。我有一块markdown,我想使用两次,不想维护它的两个版本。如何将其包含在其他降价文件中?

例如,我想输入类似的内容

: include otherFile.md 

并在此命令所在的位置直接呈现otherFile.md 的内容。请注意,父文件也是 markdown 文件,而不是 html 模板。

额外考虑:如果能够使用默认的 GitHub 页面工作流来实现这一点,并且不必使用 GH 页面禁用的插件并且必须手动推送网站的编译版本,那就太好了。

【问题讨论】:

【参考方案1】:

要走的路似乎是include_relative。我在旧的Jekyll forums 上找到了用户 geraldb 的答案:

是的,有一个简单的方法。它在 Jekyll 中“开箱即用”(和 GitHub 页面)。刚试了一下。请参阅 Vienna.html 测试页面,例如:

---
layout: default
---

some text here

% include_relative test_header.md %

some more text here

% include_relative test_footer.md %

查看源代码-> test.md 和 live page。

如果你想这样称呼它,“诀窍”就是使用include_relative 如果你想要构建块文本(例如intro.mdexplanation.mdconclusion.md 等)以及您的页面(在 同一个文件夹)。干杯。杰基林快乐。


自从我第一次写这个答案以来,原来的论坛帖子似乎已经完全消失了,我还没有在archive.org上找到它。旧论坛的答案链接是this(现在指向一个无关的帖子),新论坛geraldb的个人资料是here。

引用的答案中的第一个链接已更新,以指向当前存在的 repo 中的正确文件,1 第二个链接已失效,但在我引用时保持不变原作者在这里。


1感谢Ben Leggiero找到它!

【讨论】:

include_relative 也为我工作。虽然example code on the Jekyll tutorial page 只显示了嵌入 .html 文件的情况,但它也适用于 .md 文件。【参考方案2】:

对我来说,通过 include_relative 导入并使用 正常 include 不会呈现包含的 Markdown 文件,无法解决问题。

但是捕获包含然后通过markdownify 管道它是一个很好的解决方法:

% capture my_include %% include a_markdown_file.md %% endcapture %
 my_include | markdownify 

我在GH:/jekyll/jekyll#1303 (comment) 中找到了这个。这是避免捕获的功能请求。很遗憾,它已关闭。

【讨论】:

【参考方案3】:

有一个 Ruby gem markdown_helper 支持包含文件。

【讨论】:

以上是关于GitHub Pages 上的 Jekyll:在另一个 markdown 文件中包含 markdown的主要内容,如果未能解决你的问题,请参考以下文章

使用Jekyll + GitHub Pages免费搭建个人博客

GitHub Pages (jekyll blog) 显示 404

hexo与jekyll 搭建github pages 哪个好

使用Github pages+jekyll搭建自己的博客(windows版)

如何在 Jekyll GitHub Pages 上按页面分隔帖子?

搭建基于Github Pages和Jekyll的个人博客