隐藏Jekyll中TOC(目录)中的条目

时间:2015-04-08 15:53:02

标签: jekyll tableofcontents

我有一个网站,其中有很多降价文件已分类到相应的文件夹中。 Jekyll自动创建HTML版本和TOC(目录)。 在_config.yml文件中,我可以重命名某些文件夹,重新排列它们(例如,如果我不希望它们按字母顺序排序)。

我浏览了他们的文档(http://jekyllrb.com/docs/home/),我没有看到从TOC隐藏文件/文件夹的方法。我希望我错过了一些东西。

我想要的是隐藏TOC中的一些文件夹和文件,但保持它们的存在,以便具有正确URL的人仍然可以阅读这些文章。至于为什么 - 传统的东西,我不希望人们自己找到,但旧的链接仍然必须工作,我必须保持在线信息。

因此,我无法在降价文件本身的标题中使用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小部件,似乎我需要研究现有插件生成其数据源的方式。感谢您的帮助和时间。

2 个答案:

答案 0 :(得分:3)

嗯,取决于你究竟想要什么。如果您只想要一个包含所有帖子(TOC)的分页列表,那么您很好,可以轻松完成。但是如果你想要一个paginated list,你可能会对解决方法感到满意。

没有分页器
index.html修改{%for site in site.posts%}到

{% assign posts = site.posts | where:"hide", "false" %}
{% for post in posts %}
  ...    

并在帖子的yaml-header中添加条目hide:[true,false]。您可以使用front matter defaults,因此您只需在要排除的帖子中设置hide:false

使用分页器

首先,到目前为止(Jekyll 2.5.3)并且据我所知,不使用插件就不可能过滤分页器的输出。但到目前为止,我记得即将到来的jekyll版本可能会发生变化。

我建议,使用collection of documents处理不应显示的帖子。集合呈现为帖子(如果您将相同的布局传递给集合),但由于分页器仅适用于帖子,因此单独集合中的文档(帖子)将不会显示在由以下内容呈现的分页列表中分页器。

我希望,我能帮忙......

答案 1 :(得分:0)

原来,该网站我有一个自定义插件,遍历所有md文件,为TOC创建一个列表并将其序列化为一个json文件,然后由客户端树视图小部件使用(kendo ui,顺便说一下,它的数据来源。所以,我最终得到了几行ruby代码,跳过了将我想隐藏的文件夹添加到json中。

虽然这对我有用,但我在发布的答案中看到了这个想法,这也许是进入更多oob场景的方法。