在 Jekyll 中隐藏 TOC 中的条目(table 的内容)
Hide an entry from the TOC (table of contents) in Jekyll
我有一个网站,其中有很多 markdown 文件分类到适当的文件夹中。
Jekyll 会自动创建它们的 HTML 版本和目录(table 的内容)。
在 _config.yml
文件中,我可以重命名一些文件夹,重新排列它们(例如,如果我不希望它们按字母顺序排序)。
我查看了他们的文档 (http://jekyllrb.com/docs/home/),但没有找到从目录中隐藏 file/folder 的方法。我希望我错过了什么。
我想要的是从 TOC 中隐藏一些文件夹和文件,但让它们保持活动状态,以便具有正确 URL 的人仍然可以阅读文章。至于为什么 - 我不希望人们自己找到遗留的东西,但旧的链接必须仍然有效,我必须保持在线信息。
因此,我不能在 markdown 文件本身的标题中使用 published: false
方法,因为这会使它脱机。
这是我的配置文件的示例:
"someFolderWithChildren":
title: "Name of my folder"
position: 10
"someFolderWithChildren/child-folder-I-want-hidden":
title: "hidden folder 1"
published: false
visible: false
noToc: true
hidden: true # these did not work (I admit to guessing in frustration a lot)
"someFolderWithChildren/another-folder-I-want-hidden":
title: "hidden folder 2"
position: 8
"someFolderWithChildren/folder-i-want-in-the-toc":
title: "some live folder"
position: 1
"someFolderWithChildren/folder-i-want-in-the-toc/child-folder-i-want live":
title: "yet another live foder"
position: 0
我真的希望有人能指出我正确的方向。
编辑:回答评论和回答-我不使用帖子,恐怕我与其他类型的内容捆绑在一起。进一步挖掘表明 TOC 树实际上是一个自定义 JS 小部件,看来我需要研究现有插件生成其数据源的方式。感谢您的协助和抽出时间。
嗯,取决于你到底想要什么。如果您只想拥有所有 posts (TOC) 的未分页列表,那么您很好,而且可以轻松完成。但是,如果您想要 paginated list,您可能会对解决方法感到满意。
没有分页器
在您的 index.html
中将 {% for post in site.posts %} 修改为
{% assign posts = site.posts | where:"hide", "false" %}
{% for post in posts %}
...
并在 post 的 yaml-header 中添加条目 hide:[true,false]
。您可以使用 front matter defaults,因此您只需在要排除的 post 中设置 hide:false
。
带分页器
首先,到目前为止(Jekyll 2.5.3),据我所知,不使用插件是不可能过滤分页器的输出的。但据我所知,即将推出的 jekyll 版本可能会发生变化。
我建议使用 collection of documents 来处理不应出现的 post。 Collections 呈现为 posts(如果您将相同的布局传递给 collection),但由于分页器仅适用于 posts 您的文档(posts) 在单独的 collection 中不会显示在分页器呈现的 posts 的分页列表中。
我希望,我能帮上忙...
事实证明,我的站点有一个自定义插件,它遍历所有 md 文件,为目录创建一个列表并将其序列化为 json 文件,然后由客户端使用treeview 小部件(kendo ui,顺便说一句)作为其数据源。所以,我最终得到了几行 ruby 代码,跳过了将我想要隐藏的文件夹添加到那个 json。
虽然这对我有用,但我在发布的答案中看到了这个想法,这可能是在更多 oob 场景中进行的方式。
我有一个网站,其中有很多 markdown 文件分类到适当的文件夹中。
Jekyll 会自动创建它们的 HTML 版本和目录(table 的内容)。
在 _config.yml
文件中,我可以重命名一些文件夹,重新排列它们(例如,如果我不希望它们按字母顺序排序)。
我查看了他们的文档 (http://jekyllrb.com/docs/home/),但没有找到从目录中隐藏 file/folder 的方法。我希望我错过了什么。
我想要的是从 TOC 中隐藏一些文件夹和文件,但让它们保持活动状态,以便具有正确 URL 的人仍然可以阅读文章。至于为什么 - 我不希望人们自己找到遗留的东西,但旧的链接必须仍然有效,我必须保持在线信息。
因此,我不能在 markdown 文件本身的标题中使用 published: false
方法,因为这会使它脱机。
这是我的配置文件的示例:
"someFolderWithChildren":
title: "Name of my folder"
position: 10
"someFolderWithChildren/child-folder-I-want-hidden":
title: "hidden folder 1"
published: false
visible: false
noToc: true
hidden: true # these did not work (I admit to guessing in frustration a lot)
"someFolderWithChildren/another-folder-I-want-hidden":
title: "hidden folder 2"
position: 8
"someFolderWithChildren/folder-i-want-in-the-toc":
title: "some live folder"
position: 1
"someFolderWithChildren/folder-i-want-in-the-toc/child-folder-i-want live":
title: "yet another live foder"
position: 0
我真的希望有人能指出我正确的方向。
编辑:回答评论和回答-我不使用帖子,恐怕我与其他类型的内容捆绑在一起。进一步挖掘表明 TOC 树实际上是一个自定义 JS 小部件,看来我需要研究现有插件生成其数据源的方式。感谢您的协助和抽出时间。
嗯,取决于你到底想要什么。如果您只想拥有所有 posts (TOC) 的未分页列表,那么您很好,而且可以轻松完成。但是,如果您想要 paginated list,您可能会对解决方法感到满意。
没有分页器
在您的 index.html
中将 {% for post in site.posts %} 修改为
{% assign posts = site.posts | where:"hide", "false" %}
{% for post in posts %}
...
并在 post 的 yaml-header 中添加条目 hide:[true,false]
。您可以使用 front matter defaults,因此您只需在要排除的 post 中设置 hide:false
。
带分页器
首先,到目前为止(Jekyll 2.5.3),据我所知,不使用插件是不可能过滤分页器的输出的。但据我所知,即将推出的 jekyll 版本可能会发生变化。
我建议使用 collection of documents 来处理不应出现的 post。 Collections 呈现为 posts(如果您将相同的布局传递给 collection),但由于分页器仅适用于 posts 您的文档(posts) 在单独的 collection 中不会显示在分页器呈现的 posts 的分页列表中。
我希望,我能帮上忙...
事实证明,我的站点有一个自定义插件,它遍历所有 md 文件,为目录创建一个列表并将其序列化为 json 文件,然后由客户端使用treeview 小部件(kendo ui,顺便说一句)作为其数据源。所以,我最终得到了几行 ruby 代码,跳过了将我想要隐藏的文件夹添加到那个 json。
虽然这对我有用,但我在发布的答案中看到了这个想法,这可能是在更多 oob 场景中进行的方式。