📢 新文章推送 · 每周更新优质内容 · 订阅更新 →
向下滚动
测试笔记

文章卡片已更新标记徽章

AI 智能总结

需求描述

博客文章发布后,作者通常会持续修订和补充内容。但对于读者来说,如果文章列表只显示「发布日期」,他们无从知晓这篇文章在发布后是否有过重要更新。

在文章卡片上增加一个「已更新」徽章,可以让读者一眼识别哪些文章经过了二次修订,从而更有动力点击阅读。

Hugo 模板实现

在文章列表的卡片模板中,通过比对 .Lastmod.Date 字段来判断是否需要展示徽章:

 1<div class="post-card">
 2  {{ $isUpdated := false }}
 3  {{ if and .Lastmod .Date }}
 4    {{ if ne .Lastmod .Date }}
 5      {{ $isUpdated = true }}
 6    {{ end }}
 7  {{ end }}
 8
 9  {{ if $isUpdated }}
10    <span class="post-badge badge-updated">
11      <i class="fas fa-sync-alt"></i> 已更新
12    </span>
13  {{ end }}
14
15  {{ if .Params.sticky }}
16    <span class="post-badge badge-sticky">
17      <i class="fas fa-thumbtack"></i> 置顶
18    </span>
19  {{ end }}
20
21  {{ if .Params.featured }}
22    <span class="post-badge badge-featured">
23      <i class="fas fa-star"></i> 精选
24    </span>
25  {{ end }}
26</div>

优先级设计

徽章的显示遵循明确的优先级规则:置顶 > 精选 > 已更新。当文章同时满足多个条件时,只展示优先级最高的那个徽章,避免卡片上标签过多造成视觉混乱。

实现方式是在模板中按优先级倒序判断:

1{{ if .Params.sticky }}
2  <span class="post-badge badge-sticky">置顶</span>
3{{ else if .Params.featured }}
4  <span class="post-badge badge-featured">精选</span>
5{{ else if $isUpdated }}
6  <span class="post-badge badge-updated">已更新</span>
7{{ end }}

CSS 样式

已更新徽章使用柔和的绿色,与置顶(橙色)和精选(蓝色)形成视觉区分:

 1.post-badge {
 2  position: absolute;
 3  top: 12px;
 4  right: 12px;
 5  padding: 4px 10px;
 6  border-radius: 4px;
 7  font-size: 0.75rem;
 8  font-weight: 600;
 9  z-index: 2;
10  pointer-events: none;
11}
12
13.badge-updated {
14  background: rgba(34, 197, 94, 0.12);
15  color: #16a34a;
16  border: 1px solid rgba(34, 197, 94, 0.3);
17}
18
19.badge-featured {
20  background: rgba(59, 130, 246, 0.12);
21  color: #2563eb;
22  border: 1px solid rgba(59, 130, 246, 0.3);
23}
24
25.badge-sticky {
26  background: rgba(249, 115, 22, 0.12);
27  color: #ea580c;
28  border: 1px solid rgba(249, 115, 22, 0.3);
29}

采用低饱和度的半透明背景搭配同色系边框,既不喧宾夺主,又足够清晰可辨。

Hugo 日期字段说明

  • .Date — 文章发布日期,对应 front matter 中的 date 字段
  • .Lastmod — 文章最后修改日期。Hugo 可通过 Git 提交历史自动推断,也可在 front matter 中手动指定 lastmod 字段
  • 两者使用 ne(not equal)运算符比较,精确到秒级别

效果说明

启用已更新徽章后,读者在首页浏览文章列表时,绿色「已更新」标记会自然吸引注意力。与完全不显示更新状态的列表相比,更新文章的点击率有明显提升。

这个功能的实现代码量很小(模板中约 10 行,CSS 约 30 行),但对用户浏览决策的引导效果却十分显著。

版权声明

本文作者 Lumin

本文链接 https://www.zhengquan.xyz/biji/article-updated-badge/

许可协议 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

请作者喝杯咖啡 ☕

  • 微信打赏
    微信支付
  • 支付宝打赏
    支付宝
点击按钮查看打赏二维码
🎁 推荐工具
试试这些实用在线工具,提升工作效率
前往工具集 →

留言评论

期待你的想法

评论加载中