在一个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
一个很好的简单的非插件的方式来做标签
编辑
删除了对其他文件的依赖。 只需要一个脚本!