ruby-在jekyll博客中支持标签的简单方法

我正在使用标准的jekyll安装来维护博客,一切正常。 除了我真的很想标记我的帖子。

我可以使用YAML前端标签为帖子添加标签,但是如何为每个标签生成可以列出该标签所有帖子的页面?

raheel asked 2020-07-10T19:43:34Z
6个解决方案
75 votes

这是在单个页面上按字母顺序排序的标签的解决方案。
它仅使用Liquid,这意味着它可以在GitHub Pages上运行:

{% 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 Pages上运行)。

我在博客上有更详细的说明:
使用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开头的新文件来添加新的标记页。

这是/tags/jekyll/index.html标签的示例:

/tags/jekyll/index.html:

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

这种方法的唯一缺点是:首次使用新标签时,必须记住为其创建一个新的两行文件。

要生成根索引文件(即链接到/tags/jekyll/index.html等的标签列表),可以使用类似的解决方案,例如此答案上方的解决方案,在该解决方案中,我会生成一个按字母顺序排序的标签的页面:

{% 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的注释也适用于此方法时,该解决方案将不起作用。

Christian Specht answered 2020-07-10T19:45:22Z
14 votes

该要点将为您生成每个类别的页面:[https://gist.github.com/524748]

它使用Jekyll Generator插件,以及Page子类。

Brian Clapper answered 2020-07-10T19:43:56Z
8 votes

看看使用jekyll的网站。 有一些实现了标记功能的自定义派生,希望也可以按照您想要的方式:-)

Bitterzoet answered 2020-07-10T19:45:42Z
5 votes

我有同样的问题,偶然发现:[http://gist.github.com/143571。]

这是一个生成标签列表的瑞克任务。 我对其进行了少许修改,而我的版本是:[http://github.com/mattfoster/mattfoster.github.com/blob/master/Rakefile。]

虽然这不能为您提供每个标签的页面,但是您可以使用锚点,它只占一半!

Matt answered 2020-07-10T19:46:11Z
1 votes

我使用了很棒的Jekyll Tagging插件,该插件会自动生成标签云和标签页。 容易安装,也容易使用。

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

Nicolas Hoizey answered 2020-07-10T19:46:36Z
1 votes

根据上面克里斯蒂安的回答,我制作了一个bash脚本,可以执行他所描述的操作。

[HTTPS://GitHub.com/objective truth/objective truth.GitHub.IO/blob/master/rebuild_tags.是]

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

使上面的克里斯蒂安答案中所示的index.html,但将其重命名为.md

文件结构应如下所示:

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

从根目录运行index.html

如果您获得权限被拒绝的错误,请确保运行index.html


如果您看一下脚本注释,它相当简单:

  • 使用index.html_post目录中的每个.md文件中查找所有标签

  • 使用index.html将数据按摩为正确格式

  • 获取所有唯一标签,并为每个标签创建一个目录和一个index.html

这样,如果您有任何新标签,只需运行脚本以重建页面,然后再推送到github

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


编辑

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

ObjectiveTruth answered 2020-07-10T19:48:02Z
translate from https://stackoverflow.com:/questions/1408824/an-easy-way-to-support-tags-in-a-jekyll-blog