在 jekyll 博客中支持标签的简单方法
题
我正在使用标准 jekyll 安装来维护博客,一切都很顺利。但我真的很想标记我的帖子。
我 能 使用 YAML Front Matter 标记帖子,但如何为每个标签生成可以列出该标签的所有帖子的页面?
解决方案
这个要点将为您生成每个类别的页面: https://gist.github.com/524748一>
它使用了一个Jekyll Generator插件,还有一个Page子类。
其他提示
以下解决方案在单个页面上按字母顺序排序的标签。
它仅使用Liquid,这意味着它适用于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页面上使用)。
我的博客上有更详细的解释:
每个标签/类别的单独页面与杰基尔(没有插件)
首先,您需要一个新的布局文件:
<代码> / _布局/ 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
---
这种方法的唯一缺点是:每次第一次使用新标签时,都必须记住为它创建一个新的双行文件。
要生成根索引文件(即链接到 /tags/jekyll/index.html
等的标记列表),您可以使用类似的解决方案就像在这个答案的顶部,我生成一个带有alphebetically sorted标签的单页:
{% 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>
请注意,此解决方案使用空格分割标记,因此当标记包含空格并且 Yevgeniy Brikman的评论也适用于此。
查看使用jekyll的网站。有一些自定义分叉已经实现了标记功能,希望也可以按照你想要的方式: - )
我有同样的问题,偶然发现了这个问题: http://gist.github.com/143571一>
这是一个生成标签列表的rake任务。我稍微修改了一下,我的版本是: http://github.com/mattfoster/mattfoster.github.com/blob /主/ Rake文件。
虽然这并没有为每个标签提供一个页面,但你可以使用锚点,这就是那里的一半!
我使用优秀的 Jekyll Tagging 插件自动生成标签云和标签页。易于安装和使用。
以下是“照片”的页面。标签在我的博客上(法语),你可以在底部看到标签云。
根据上面克里斯蒂安的回答,我制作了一个 bash 脚本来执行他所描述的操作。
https://github.com/ObjectiveTruth/objectivetruth.github.io/blob/master/rebuild_tags.sh
一定要附带14行 vim脚本 在里面 /non_website_resources/
目录
和
使 /_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
查找每个中的所有标签.md
文件输入_post
目录用途
sed
将数据调整为正确的格式获取所有唯一标签并创建一个目录和一个
index.html
对于每个
这样,如果您有任何新标签,只需运行脚本来重建页面,然后再推送到 github
一种很好的简单的非插件方式来制作标签
编辑
删除了对其他文件的依赖。只需要一个脚本!