Skip to content

教程说明

📖 阅读信息

阅读时间:1 分钟 | 中文字符:350 | 有效代码行数:53

MkDocs Hooks Python 3.7+

🌟为MkDocs文档添加阅读时间统计功能!

支持自定义统计格式和排除特定页面,可计算中文字符数、代码行数并估算阅读时间,适用于长文档网站,提升用户体验。配置包含排除规则设置和本地预览测试方法,便于灵活部署。

image

🌐 在线演示: https://wcowin.work/mkdocs-reading-time/


1. 基础配置

步骤1

下载reading_time.py

步骤2

把reading_time.py放到docs/overrides/hooks目录下,然后在mkdocs.yml中添加:

1
2
3
# 在 mkdocs.yml 中添加
hooks:
  - docs/overrides/hooks/reading_time.py    # 阅读时间统计

步骤3

配置MkDocs主题以及覆写路径custom_dir

1
2
3
4
5
6
7
# 在 mkdocs.yml 中添加
theme:
  name: material
  custom_dir: docs/overrides  # 必需配置!!!
  features:
    - content.code.copy
    - content.code.select

到这里检查下目录树状图:

$ tree -a
文件名
├── .github
│   ├── .DS_Store
│   └── workflows
│       └── ci.yml
├── docs
│   └── index.md
|   └── overrides
│       └── hooks
│           └── reading_time.py
│           └── ...
└── mkdocs.yml

步骤4

mkdocs serve  # 本地预览

2. 效果展示

image

3.高级配置

3.1 排除特定页面

如果有一些页面不想统计阅读时间,可以在页面的元数据中添加 hide_reading_time: true。例如:

1
2
3
4
---
title: 不统计阅读时间的页面
hide_reading_time: true
---

或者直接在reading_time.py中添加:

# 你想排除的页面路径
EXCLUDE_PATTERNS = [
    re.compile(r'^index\.md$'),
    re.compile(r'^trip/index\.md$'),
    re.compile(r'^relax/index\.md$'),
    re.compile(r'^blog/indexblog\.md$'),
    re.compile(r'^blog/posts\.md$'),
    re.compile(r'^develop/index\.md$'),
    re.compile(r'waline\.md$'),
    re.compile(r'link\.md$'),
    re.compile(r'404\.md$'),
]

3.2 自定义统计信息

如果需要自定义统计信息的格式,可以修改reading_time.py中的calculate_reading_stats函数。例如:

def calculate_reading_stats(markdown):
    # 计算统计信息
    reading_time, chinese_chars, code_lines = calculate_reading_stats(markdown) 
    # 自定义统计信息格式
    if code_lines > 0:
        reading_info = f"""!!! info "📖 阅读信息"
    阅读时间:**{reading_time}** 分钟 | 中文字符:**{chinese_chars}** | 有效代码行数:**{code_lines}**
    """
    else:
        reading_info = f"""!!! info "📖 阅读信息"
    阅读时间:**{reading_time}** 分钟 | 中文字符:**{chinese_chars}**
    """
    return reading_info + markdown

🐛 问题反馈

遇到问题?请在 Issues 中反馈。

反馈时请包含

  • MkDocs版本
  • Python版本
  • 完整错误信息
  • 复现步骤
  • 配置文件(去除敏感信息)

📄 许可证

本项目采用 MIT License 开源协议。


🙏 致谢

感谢以下项目和服务:


🔗 联系作者

Telegram

微信交流


⭐Star History

Star History Chart


☕ 支持项目

如果这个项目对您有帮助,请给它一个 ⭐ Star!


📝 让MkDocs文档更加系统化

⬆ 回到顶部