六一的部落格


关关难过关关过,前路漫漫亦灿灿。




说明

春天开始用Hugo, 到现在已经鼓捣过好些了主题, 自己的需求也渐渐清晰. 自定义主题的好处, 拥有适合的框架, 以及满足自己的需求

比如说, 文档类主题通常没有最近发布页面, 而这一点在技术博客里挺重要的, 可以把握自己一段时间以来的积累

这一块的逻辑并不复杂, 一则是计数器, 再来就是分区的筛选, 最后是对日期显示的优化


计数器逻辑

Hugo提供全局计数器, 通过调用并减去初始值, 实现计数功能

转换成整型


分区筛选

  1. .Site.RegularPages 用来获取站点所有博文页
  2. 使用 ByPublishDate 按发布日期从远到近排序; 使用 ByLastmod 按修改日期从远到近排序
  3. 使用 Reverse 逆序
  4. 对笔记分区使用

日期显示

-
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 }}

可以改善的地方

  • 按日期分组
  • 放在主页时, 和导航栏有重叠

Hugo Theme - 最近发布和最近更新



说明

春天开始用Hugo, 到现在已经鼓捣过好些了主题, 自己的需求也渐渐清晰. 自定义主题的好处, 拥有适合的框架, 以及满足自己的需求

比如说, 文档类主题通常没有最近发布页面, 而这一点在技术博客里挺重要的, 可以把握自己一段时间以来的积累

这一块的逻辑并不复杂, 一则是计数器, 再来就是分区的筛选, 最后是对日期显示的优化


计数器逻辑

Hugo提供全局计数器, 通过调用并减去初始值, 实现计数功能

转换成整型


分区筛选

  1. .Site.RegularPages 用来获取站点所有博文页
  2. 使用 ByPublishDate 按发布日期从远到近排序; 使用 ByLastmod 按修改日期从远到近排序
  3. 使用 Reverse 逆序
  4. 对笔记分区使用

日期显示

-
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 }}

可以改善的地方

  • 按日期分组
  • 放在主页时, 和导航栏有重叠