Hugo Theme - 最近发布和最近更新
2023年11月13日 2024年2月13日
说明
春天开始用Hugo, 到现在已经鼓捣过好些了主题, 自己的需求也渐渐清晰. 自定义主题的好处, 拥有适合的框架, 以及满足自己的需求
比如说, 文档类主题通常没有最近发布页面, 而这一点在技术博客里挺重要的, 可以把握自己一段时间以来的积累
这一块的逻辑并不复杂, 一则是计数器, 再来就是分区的筛选, 最后是对日期显示的优化
计数器逻辑
Hugo提供全局计数器, 通过调用并减去初始值, 实现计数功能
分区筛选
.Site.RegularPages
用来获取站点所有博文页- 使用
ByPublishDate
按发布日期从远到近排序; 使用ByLastmod
按修改日期从远到近排序 - 使用
Reverse
逆序 - 对笔记分区使用
日期显示
- |
---|
Date用法 |
Time方法 |
Time.Format用法 |
Date用法
1{{ .Date | time.Format ":date_medium" }}
Oct 19, 2023
日期格式
- 年月日
- 时间, 分上下午
- 星期几
1{{ $format := "Mon, 2 Jan 2006 03:04 pm"}} 2{{ .PublishDate | time.Format $format }}
完整实现
- 最近发布
1<h2> 最近发布 </h2> 2{{ $start := math.Counter }} 3{{ $count := 15 }} 4{{ range where .Site.RegularPages.ByPublishDate.Reverse "Section" "notebook" }} 5<div> 6 <a href="{{ .Permalink }}">{{ .Title }} {{ .PublishDate }} </a> 7</div> 8 {{ $ans := sub math.Counter $start }} 9 <!-- 将ans转换成整型--> 10 {{ $ans := int $ans }} 11 {{ if ge $ans $count }} 12 {{ break }} 13 {{ end }} 14{{ end }}
- 最近更新
1<h2> 最近更新 </h2> 2{{ $start := math.Counter }} 3{{ $count := 15 }} 4{{ range where .Site.RegularPages.ByLastmod.Reverse "Section" "notebook" }} 5<div> 6 <a href="{{ .Permalink }}">{{ .Title }} {{ .Lastmod }} </a> 7</div> 8 {{ $ans := sub math.Counter $start }} 9 {{ $ans := int $ans }} 10 {{ if ge $ans $count }} 11 {{ break }} 12 {{ end }} 13{{ end }}
可以改善的地方
- 按日期分组
- 放在主页时, 和导航栏有重叠