我正在使用标准 jekyll 安装来维护博客,一切都很顺利。但我真的很想标记我的帖子。

使用 YAML Front Matter 标记帖子,但如何为每个标签生成可以列出该标签的所有帖子的页面?

有帮助吗?

其他提示

以下解决方案在单个页面上按字母顺序排序的标签
它仅使用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

一种很好的简单的非插件方式来制作标签


编辑

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top