HUGO主要用于发布个人静态博客,大多数博客对类别管理没有那么严苛。hugo系统中的read-more.html模板,所有的主题,默认的下一篇和下一篇文章都是发布篇的前后文章。这本身没啥问题,博客就是象笔记一样,是一个想到什么写什么的地方。
有时,比如就象我这个博客,文章类别跨度有点大,有音乐、有阅读、有编程相关的东西,而这几个类别,阅读者的重叠率又相当低。为了便于自己管理,就想将上下篇文章的选取改为同类别相邻的文章。
在文章中添加了一个 categories 分类, 比如:
categories: "Readings"
在config.toml中:
[[menu.main]]
name = "Readings"
identifier = "readings"
url = "/readings/"
weight = 20
categories分类是hugo默认的分类,只要文章中有这个键值,系统就会自动生成类别索引了,并创建相应的路径,比如 /readings/。
在 layouts/partials中,修改read-more.html模板:
{{ range where .Site.RegularPages.ByDate "Params.categories" .Params.categories }}
{{ if gt $.Date.Unix .Date.Unix }}
{{ $.Scratch.Set "prev_link" .Permalink }}
{{ $.Scratch.Set "prev_title" .Title }}
{{ $.Scratch.Set "prev_date" (.Date.Format "2006-01-02") }}
{{ end }}
{{ end }}
{{ range where .Site.RegularPages.ByDate.Reverse "Params.categories" .Params.categories }}
{{ if lt $.Date.Unix .Date.Unix }}
{{ $.Scratch.Set "next_link" .Permalink }}
{{ $.Scratch.Set "next_title" .Title }}
{{ $.Scratch.Set "next_date" (.Date.Format "2006-01-02") }}
{{ end }}
{{ end }}
于是,上下篇文章的选取变成:
{{ if $.Scratch.Get "next_link" }} ... {{ end }}
{{ if $.Scratch.Get "prev_link" }} ... {{ end }}
上下篇文章的标题选取:
{{ $.Scratch.Get "next_title" }}
{{ $.Scratch.Get "prev_title" }}
发布时间选取:
{{ $.Scratch.Get "next_date" }}
{{ $.Scratch.Get "prev_date" }}
按自己喜欢的布局重新写一下即可。