在一个jekyll博客中支持标签的简单方法

我正在使用标准的jekyll安装来维护一个博客,一切都很顺利。 除了我真的想标记我的post。

可以使用YAML前端事件标记post,但是如何为每个标签生成页面,以便列出标签的所有post?

这个要点将为您生成一个类别的页面: https : //gist.github.com/524748

它使用一个Jekyll Generator插件,再加上一个Page子类。

这是一个解决scheme,在单个页面上按字母顺序排列的标签
它只使用液体,这意味着它在GitHub页面上工作:

{% capture tags %} {% for tag in site.tags %} {{ tag[0] }} {% endfor %} {% endcapture %} {% assign sortedtags = tags | split:' ' | sort %} {% for tag in sortedtags %} <h3 id="{{ tag }}">{{ tag }}</h3> <ul> {% for post in site.tags[tag] %} <li><a href="{{ post.url }}">{{ post.title }}</a></li> {% endfor %} </ul> {% endfor %} 

你可以在这里看到它的行动。


编辑:

还有一种方法可以为没有插件的每个标签生成一个单独的页面(这将在GitHub页面上工作)

我在博客上有更详细的解释:
使用Jekyll为每个标签/类别分页(无插件)

首先,你需要一个新的布局文件:

/_layouts/tagpage.html

 --- layout: default --- <h1>{{ page.tag }}</h1> <ul> {% for post in site.tags[page.tag] %} <li> {{ post.date | date: "%B %d, %Y" }}: <a href="{{ post.url }}">{{ post.title }}</a> </li> {% endfor %} </ul> 

使用这个布局文件,您可以添加一个新的标签页,只需添加两行YAML前端文件即可。

这是一个jekyll标签的例子:

/tags/jekyll/index.html

 --- layout: tagpage tag: jekyll --- 

这种方法的唯一缺点是:每次您第一次使用新的标签时,您都必须记住为其创build一个新的双行文件。

要生成根索引文件(即链接到/tags/jekyll/index.html等的标签列表) ,您可以使用类似的解决scheme,就像在这个答案的顶部,我生成一个单一的页面alphebeticallysorting标签:

 {% capture tags %} {% for tag in site.tags %} {{ tag[0] }} {% endfor %} {% endcapture %} {% assign sortedtags = tags | split:' ' | sort %} {% for tag in sortedtags %} <a href="/tags/{{ tag }}/">{{ tag }}</a><br> {% endfor %} 

这将产生一个这样的链接列表:

 <ul> <li><a href="/tags/.net/">.net</a></li> <li><a href="/tags/authentication/">authentication</a></li> <li><a href="/tags/backup/">backup</a></li> </ul> 

请注意,此解决scheme使用空格来分隔标签,所以当您的标签包含空白时,它不起作用, Yevgeniy Brikman的评论也适用于此处。

看看使用jekyll的网站 。 有一些自定义的叉子已经实现了标签function,希望也可以用你想要的方式:-)

我有同样的问题,并偶然发现这一点: http : //gist.github.com/143571 。

这是一个生成标签列表的耙子任务。 我稍微修改了一下,我的版本是: http : //github.com/mattfoster/mattfoster.github.com/blob/master/Rakefile 。

虽然这不会给你每个标签的页面,你可以使用锚点,这是一半的地方!

我使用伟大的Jekyll标签插件,自动生成标签云和标签页。 易于安装和使用。

这里是我的博客(法语) “照片”标签的页面 ,您可以在底部看到标签云。

基于上面的基督教的回答,我做了一个他所描述的bash脚本。

https://github.com/ObjectiveTruth/objectivetruth.github.io/blob/master/rebuild_tags.sh

请确保在/non_website_resources/目录中具有随附的14行vim脚本

在上面的Christian答案中显示/_layouts/tagpage.html ,但将其重命名为/_layouts/tag_pages.html

文件结构应该是这样的:

 .jekyll_website_root ├── _posts ├── _layout │ ├── tag_pages.html ├── rebuild_tags.sh 

从根目录运行./rebuild_tags.sh

如果你得到权限被拒绝的错误,一定要运行chmod 777 rebuild_tags.sh


如果你看脚本评论它相当简单:

  • 使用sed_post目录中的每个.md文件中查找所有标记

  • 使用sed将数据按摩到适当的格式

  • 采取所有独特的标签,并为每个目录和index.html

这样,如果你有任何新的标签,只需运行脚本来重build页面,然后推送到github

一个很好的简单的非插件的方式来做标签


编辑

删除了对其他文件的依赖。 只需要一个脚本!