一、安装

  • 执行 gem install jekyll-tagging 安装插件

  • Gemfile 文件中添加一行

    gem 'jekyll-tagging'

  • _plugins/ext.rb文件中添加:

    require 'jekyll/tagging'

    如果没有此文件(夹),请先创建。

二、配置

  • 修改_config.yml文件

增加tagging配置:

tag_page_layout: tag_page
tag_page_dir: tag

tag_page_layout为标签页面模版;tag_page_dir为生成带标签页面的位置。

  • 新增标签页面模板布局

_layouts下新建tag_page.html,内容参见附录

  • 添加标签tags

在文章的头信息(Front Matter)中添加tags,如下:

---
layout: post
title: "爱在记忆消逝前"
date: 2018-02-21 15:00:55
tags: 剧情 爱情
---

三、效果

访问tag_page_dir配置的文件夹,可以看到此文件夹下为每个标签生成了一个html文件:

访问其中的一个标签页面,效果如下:

但如果标签使用中文,在windows下会有编码问题,导致在该页面中点击跳转其他标签,会找不到文件

四、其他配置

  • 配置要忽略的标签

源文档中还提到可以通过在_config.yml文件中添加ignored_tags: [tags,to,ignore]实现此数组中的标签不生成标签页面。

此配置在以下环境测试失败,未生效!

ruby 2.4.3p205 
jekyll 3.6.2
jekyll-tagging 1.10

特意看了下jekyll-tagging-1.1.0安装目录下的/lib/jekyll/tagging.rb文件:

def generate(site)
  self.class.site = self.site = site

  generate_tag_pages
  add_tag_cloud
end

def generate_tag_pages
  active_tags.each { |tag, posts| new_tag(tag, posts) }
end

def active_tags
  return site.tags unless site.config["ignored_tags"]
  site.tags.reject { |t| site.config["ignored_tags"].include? t[0] }
end

加了些日志,看到的结果是:

generate_tag_pages方法中调用的active_tags中并没有过滤掉ignored_tags,但我自己模拟的测试reject方法都是有效的,由于对ruby不熟悉,所以暂时只能这样了,如果哪位大神有解决方法请发邮件(albertbamboo@foxmail.com)告知,感激不尽!

附: