一級難度
分頁
如何同時滿足㒳箇條件:1、每 50 篇進行分頁;2、按年份進行分組
1
2
3
4
5
6
7
| {{ $paginator := .Paginate (where .Pages.ByDate.Reverse "Type" "post") (index 50) }}
{{ range $paginator.Pages.GroupByPublishDate "2006" }}
{{ .Key }}
{{ range .Pages }}
{{ .Title }}
{{ end }}
{{ end }}
|
統計
這個 list
中,一共有多少篇文章?多少字?平均每篇多少字?
1
2
3
4
5
6
| {{- $length := len .Data.Pages }}
{{ $count := 0 }}
{{ range .Pages }}
{{ $count = add $count .WordCount }}
{{ end }}
凡 {{ $length }} 篇 {{ $count }} 字 篇均 {{ div $count $length }} 字
|
年數
這些文章存在於幾箇年份中?
1
| {{ len (.Pages.GroupByDate "2006") }}
|
各年統計
各年的情況又怎樣?
1
2
3
4
5
6
7
8
| {{ range $paginator.Pages.GroupByPublishDate "2006" }}
{{ $countyear := 0 }}
{{ range .Pages }}
{{ $countyear = add $countyear .WordCount }}
{{ end }}
{{ $lengthyear := len .Pages }}
{{ .Key }} 凡 {{ $lengthyear }} 篇 {{- $countyear }} 字 篇均 {{ div $count6 $lengthyear }} 字
⋯⋯
|
最關鍵的坑是 {{ $lengthyear := len .Pages }}
。我試了好久,沒想到就那麼簡單一箇。
但要注意的是,每年的情況受到分頁的制約,相同年份會顯示在各自分頁下的數據。至於如何統計連貫的年份數據,我還沒想出來。那將是三級難度的。
二級難度
文章序號
如果沒有分頁,文章序號是很好算的,可是加上分頁之後怎麼辦呢?
1
2
3
4
5
6
| {{ $count4 := sub (add $length 1 ) (mul 50 (sub $paginator.PageNumber 1)) }}
⋯⋯
{{ range .Pages }}
{{ $count4 = sub $count4 1 }}{{ $count4 }} {{ .Title }}
{{ end }}
⋯⋯
|
最關鍵的坑就是 {{ $count0 := $paginator.PageNumber }}
。我之前試了好久都不成功,就是因爲這個。
把上面寫成算式就是,第一個數字是 (文章總數 + 1) - (頁數 - 1) × 50,然後在循環中不斷 -1。
三級難度
統計連貫的年份數據。暫時無解。
拓展閱讀:Yearly Post Archives In Hugo 一些歸檔技巧。他也沒辦法按年歸檔。