【Hexo】Butterfly主题运行时间显示优化,支持年天格式
慕雪的小助手正在绞尽脑汁···
慕雪小助手的总结
LongCat-Flash-Chat
慕雪前排提醒,本文全文为AI生成,包括butterfly主题的修改点也是AI找到并修改的。使用的是GLM-4.6模型和Claude Code。
1. 前言
博客运行时间是一个很有意义的指标,它记录了博客持续运行的时间。默认情况下,Butterfly主题会显示为纯天数格式,比如"1265 天"。虽然准确,但对于访客来说,这种大数字不够直观。
今天我就来分享如何将运行时间显示优化为更友好的年天格式,比如"3年170天",让访客能更直观地了解博客的运行时长。
2. 效果对比
- 默认格式:
1265 天 - 优化后:
3 年 170 天
很明显,年天格式更加直观易懂!
3. 实现思路
要实现这个功能,我们需要修改以下几个部分:
- JavaScript 工具函数 (
utils.js) - 修改diffDate函数,支持年天格式计算 - 主逻辑函数 (
main.js) - 修改addRuntime函数,智能处理显示格式 - 配置传递 (
config.pug) - 将新配置项传递到前端 - 用户配置 (
_config.butterfly5.yml) - 添加配置选项
4. 详细实现步骤
4.1. 添加配置选项
首先在主题配置文件中添加新的配置选项:
1 | # _config.butterfly5.yml |
4.2. 修改 JavaScript 工具函数
修改 themes/butterfly5/source/js/utils.js 中的 diffDate 函数:
1 | diffDate: (inputDate, more = false) => { |
关键点:
- 当
runtime_format为year_day且天数 ≥ 365 时,执行年天转换 - 使用
Math.floor(totalDays / 365)计算年份 - 使用
totalDays % 365计算剩余天数 - 智能显示:只有年显示"X年",只有天显示"X天",都有显示"X年X天"
4.3. 修改主显示逻辑
修改 themes/butterfly5/source/js/main.js 中的 addRuntime 函数:
1 | const addRuntime = () => { |
关键点:
- 检查配置格式和返回文本内容
- 年天格式已经包含单位,不再添加额外的"天"字
- 保持对默认格式的兼容性
4.4. 配置传递到前端
修改 themes/butterfly5/layout/includes/head/config.pug,在 GLOBAL_CONFIG 中添加:
1 | const GLOBAL_CONFIG = { |
4.5. 默认配置设置
在 themes/butterfly5/scripts/events/merge_config.js 中添加默认值:
1 | card_webinfo: { |
5. 配置选项说明
| 配置值 | 说明 | 示例 |
|---|---|---|
days |
默认格式,显示纯天数 | 1265 天 |
year_day |
年天格式,显示年和天 | 3 年 170 天 |
6. 兼容性说明
这个实现完全向后兼容:
- 不设置
runtime_format或设置为days时,保持原有显示效果 - 只有明确设置为
year_day时才启用新格式 - 适用于所有现有的
runtime_date配置
7. 注意事项
- 闰年处理:这里使用简单的 365 天计算,没有考虑闰年,但对于显示效果影响不大
- 配置生效:修改配置后需要重新生成站点(
hexo generate) - 主题更新:主题更新时需要注意保留这些修改
8. 总结
通过这个简单的优化,我们可以让博客的运行时间显示更加人性化和直观。这个实现不仅解决了显示问题,还提供了灵活的配置选项,让用户可以根据喜好选择显示格式。
这种小细节的优化能够提升用户体验,让访客更好地了解博客的历史和持续性。如果你也在使用 Butterfly 主题,不妨试试这个优化!
相关文件:
themes/butterfly5/source/js/utils.js- 核心计算逻辑themes/butterfly5/source/js/main.js- 显示逻辑themes/butterfly5/layout/includes/head/config.pug- 配置传递_config.butterfly5.yml- 用户配置
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 慕雪的寒舍!
评论



