【问题标题】:Hide an entry from the TOC (table of contents) in Jekyll在 Jekyll 中隐藏 TOC(目录)中的条目
【发布时间】:2015-04-08 15:53:02
【问题描述】:

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

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

我想要从 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 小部件,看来我需要研究现有插件生成其数据源的方式。感谢您的协助和时间。

【问题讨论】:

  • 你能在你的问题中添加你的 TOC 循环吗?或者可能是您在 github 上的代码的链接?

标签: jekyll tableofcontents


【解决方案1】:

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

没有分页器
在您的index.html 中将 {% for post in site.posts %} 修改为

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

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

带分页器

首先,到目前为止(Jekyll 2.5.3),据我所知,不使用插件就不可能过滤分页器的输出。但据我所知,即将推出的 jekyll 版本可能会有所改变。

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

希望能帮到你……

【讨论】:

  • 我不使用帖子,恐怕,我与其他类型的内容捆绑在一起。进一步挖掘表明,TOC 树实际上是一个自定义 JS 小部件,看来我需要研究现有插件生成其数据源的方式。感谢您的帮助和时间
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 2013-06-30
    • 2021-06-07
    • 1970-01-01
    • 2017-05-06
    • 2015-07-12
    • 1970-01-01
    相关资源
    最近更新 更多