是否可以使用kramdown在非文章页面中生成目录?如果可以,如何实现?

4

我的Jekyll网站的首页应该与帖子完全相同,只有一个额外的代码部分用于导航其他帖子。我并不是真正用它来生成博客,而是一堆新闻页面。

现在,在每篇文章中,我正在使用kramdown生成目录,如下所示:

* This line is a placeholder to generate the table of contents
{:toc}

那对于所有的帖子都有效,但是当我尝试在除帖子以外的任何地方使用它时,它就不会生成。输出内容为空。它不显示上面的原始kramdown或任何东西,它只是消失了,没有任何东西(特别是没有目录)出现在它的位置。
这篇文章的一些评论: 如何为Jekyll博客文章创建目录?
建议在上述代码之前放置一个<li>,但我尝试了每种可能的迭代,它都没用。另一个评论建议需要使用<h1>标签,而这已经存在。
我知道有一个插件可以生成目录,非javascript版本比使用kramdown实现TOC的版本要旧(该插件在此处:https://github.com/dafi/jekyll-toc-generator)。
另一个插件(https://github.com/ghiculescu/jekyll-table-of-contents)稍微更新一些,但我更愿意使用kramdown已经能够做到的而不是使用JavaScript来完成。
在我的情况下,是否可能使用标准的kramdown目录markdown在页面上生成一个目录,而不是在帖子上?
2个回答

3

没有一种方法可以使用kramdown选项完成这个任务,也不能在Jekyll页面的{{ content }}中使用{:toc}选项,因为{:toc}无法在生成的HTML中使用。

我知道这是一个比较旧的问题,但对于最近遇到这个问题的任何人。我在这里提供了解决方案,它只使用Liquid,因此在GitHub页面上可以完美运行(无需插件)并且禁用JavaScript。我的解决方案适用于Jekyll给出的生成的HTML,所以不需要奇怪的解决方法。

我知道“仅链接答案”是不受欢迎的,但我不想在多个地方维护相同的代码片段。所以希望您不要介意。


我会去看一下。虽然已经有一段时间没有尝试过这个,但它仍然是我必须掌握的东西。 - ChaBuku Bakke
这太棒了。谢谢冠军。 - Rocklan

1
如果您的索引页面没有YAML首部信息,那么Jekyll将不会调用kramdown处理器。这只是一个猜测,但这可能是您的问题所在。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接