diff options
| author | yingyu5658 <i@yingyu5658.me> | 2025-12-13 08:33:08 +0800 |
|---|---|---|
| committer | yingyu5658 <i@yingyu5658.me> | 2025-12-13 08:33:08 +0800 |
| commit | 1e5f8eb33bc41cb59faf059e83701152785cabea (patch) | |
| tree | 45867273ac2178285be840764f7962d2b55556c6 /layouts/shortcodes | |
| download | blog-1e5f8eb33bc41cb59faf059e83701152785cabea.tar.gz blog-1e5f8eb33bc41cb59faf059e83701152785cabea.zip | |
Initial commit
Diffstat (limited to 'layouts/shortcodes')
| -rw-r--r-- | layouts/shortcodes/archives-list.html | 30 | ||||
| -rw-r--r-- | layouts/shortcodes/recent-posts.html | 55 | ||||
| -rw-r--r-- | layouts/shortcodes/word-count.html | 74 |
3 files changed, 159 insertions, 0 deletions
diff --git a/layouts/shortcodes/archives-list.html b/layouts/shortcodes/archives-list.html new file mode 100644 index 0000000..b9767f7 --- /dev/null +++ b/layouts/shortcodes/archives-list.html @@ -0,0 +1,30 @@ +{{ $allPages := where .Site.RegularPages "Type" "in" (slice "posts" "blog") }} +{{ $visiblePages := where $allPages "Params.hidden" "!=" true }} +{{ $pagesToShow := $visiblePages.ByDate.Reverse }} + +<div class="archives-content"> + <h2>归档</h2> + + <p>共有 {{ len $pagesToShow }} 篇文章</p> + + <ul class="blog-posts"> + {{ $currentYear := 0 }} + {{ range $pagesToShow }} + {{ $year := .Date.Year }} + {{ if ne $year $currentYear }} + <h3>{{ $year }}</h3> + {{ $currentYear = $year }} + {{ end }} + <li> + <span> + <i> + <time datetime='{{ .Date.Format "2006-01-02" }}'> + {{ .Date.Format "2006-01-02" }} + </time> + </i> + </span> + <a href="{{ .Permalink }}">{{ .Title }}</a> + </li> + {{ end }} + </ul> +</div> diff --git a/layouts/shortcodes/recent-posts.html b/layouts/shortcodes/recent-posts.html new file mode 100644 index 0000000..c6c1a3e --- /dev/null +++ b/layouts/shortcodes/recent-posts.html @@ -0,0 +1,55 @@ +{{ $pages := where site.RegularPages "Type" "in" site.Params.mainSections }} {{ +$recent := first 5 $pages.ByDate.Reverse }} +<style> + .recent-list { + margin: 0; + } + + .recent-item { + position: relative; + margin-bottom: 8px; + display: flex; + align-items: flex-start; + } + + .item-link { + display: inline-block; + text-decoration: none; + margin-left: 10px; + flex: 1; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + + .post-date { + font-size: 0.9em; + color: #666; + display: inline-block; + min-width: 80px; + flex-shrink: 0; + } + + .recent-empty { + text-align: center; + font-style: italic; + } +</style> +<div class="recent-posts"> + {{ if $recent }} + <ul class="recent-list"> + {{ range $index, $page := $recent }} + <li class="recent-item"> + <span class="post-date"> + <time datetime='{{ .Date.Format "2006-01-02" }}'> + {{ .Date.Format (default "2006-01-02" .Site.Params.dateFormat) }} + </time> + </span> + <a href="{{ .RelPermalink }}" class="item-link">{{ .Title }}</a> + </li> + {{ end }} + </ul> + {{ else }} + <p class="recent-empty">暂无文章</p> + {{ end }} +</div> diff --git a/layouts/shortcodes/word-count.html b/layouts/shortcodes/word-count.html new file mode 100644 index 0000000..0621ed9 --- /dev/null +++ b/layouts/shortcodes/word-count.html @@ -0,0 +1,74 @@ +{{ $scratch := newScratch }} +{{ if eq (.Get 0) "posts" }} + {{/* 统计所有博客文章 */}} + {{ range where site.RegularPages "Type" "in" (slice "posts" "jottings" "readings" "tech") }} + {{ $scratch.Add "wordcount" .WordCount }} + {{ end }} +{{ else if eq (.Get 0) "all" }} + {{/* 统计所有内容 */}} + {{ range where site.RegularPages "Type" "in" (slice "posts" "about" "newsgroup" "links" "jottings" "readings" "tech") }} + {{ $scratch.Add "wordcount" .WordCount }} + {{ end }} +{{ end }} + +{{ $count := $scratch.Get "wordcount" }} +{{ if gt $count 0 }} + {{ $count }} 字, + + {{/* 名著数据库(字数单位:汉字) */}} + {{ $classics := slice + (dict "name" "红楼梦" "author" "曹雪芹" "country" "(中)" "words" 731017) + (dict "name" "源氏物语" "author" "紫式部" "country" "(日)" "words" 876000) + (dict "name" "假面的告白" "author" "三岛由纪夫" "country" "(日)" "words" 86000) + (dict "name" "金阁寺" "author" "三岛由纪夫" "country" "(日)" "words" 125000) + (dict "name" "了不起的盖茨比" "author" "菲茨杰拉德" "country" "(美)" "words" 49800) + (dict "name" "傲慢与偏见" "author" "简·奥斯汀" "country" "(英)" "words" 183000) + (dict "name" "呐喊" "author" "鲁迅" "country" "(中)" "words" 152000) + (dict "name" "罗生门" "author" "芥川龙之介" "country" "(日)" "words" 35800) + (dict "name" "老人与海" "author" "海明威" "country" "(美)" "words" 26800) + (dict "name" "简爱" "author" "夏洛蒂·勃朗特" "country" "(英)" "words" 322000) + (dict "name" "三国演义" "author" "罗贯中" "country" "(中)" "words" 640000) + (dict "name" "雪国" "author" "川端康成" "country" "(日)" "words" 78000) + (dict "name" "杀死一只知更鸟" "author" "哈珀·李" "country" "(美)" "words" 187000) + (dict "name" "1984" "author" "乔治·奥威尔" "country" "(英)" "words" 123000) + (dict "name" "围城" "author" "钱钟书" "country" "(中)" "words" 257000) + (dict "name" "我是猫" "author" "夏目漱石" "country" "(日)" "words" 402000) + (dict "name" "飘" "author" "玛格丽特·米切尔" "country" "(美)" "words" 802000) + (dict "name" "呼啸山庄" "author" "艾米莉·勃朗特" "country" "(英)" "words" 282000) + }} + + {{/* 寻找最接近的名著 */}} + {{ $closest := dict "diff" 999999999 "book" (index $classics 0) }} + {{ range $book := $classics }} + {{ $ratio := div (float $count) $book.words }} + {{ if and (ge $ratio 0.8) (le $ratio 1.2) }} + {{ $diff := sub $ratio 1.0 }} + {{ if lt $diff 0 }}{{ $diff = mul $diff -1 }}{{ end }} + {{ if lt $diff $closest.diff }} + {{ $closest = dict "diff" $diff "book" $book }} + {{ end }} + {{ end }} + {{ end }} + + {{/* 输出对比结果 */}} + {{ with $closest.book }} + 约等于 《{{ .name }}》 的{{ div (float $count) .words | printf "%.1f" }}倍 + {{ else }} + {{/* 未找到匹配时显示长度最接近的名著 */}} + {{ $closestBook := index $classics 0 }} + {{ $minDiff := sub $count $closestBook.words }} + {{ if lt $minDiff 0 }}{{ $minDiff = mul $minDiff -1 }}{{ end }} + {{ range $classics }} + {{ $currDiff := sub $count .words }} + {{ if lt $currDiff 0 }}{{ $currDiff = mul $currDiff -1 }}{{ end }} + {{ if lt $currDiff $minDiff }} + {{ $closestBook = . }} + {{ $minDiff = $currDiff }} + {{ end }} + {{ end }} + ≈ {{ $closestBook.name }}{{ div (float $count) $closestBook.words | printf "%.1f" }}倍 + {{ end }} + +{{ else }} + 0字 +{{ end }} |
