如何在mkdocs.yml中使用build_date_utc设置版权年份
问题原因
build_date_utc 是Mkdocs构建时注入到主题模板Jinja上下文的变量,只能在主题的HTML模板文件中被解析渲染,直接写在mkdocs.yml的copyright配置项中的Jinja语法不会被识别,会原样输出到最终HTML中,因此你之前的配置无法生效。
正确实现步骤(以常用的mkdocs-material主题为例,其他主题逻辑一致,仅模板路径略有差异)
- 新建自定义模板目录
在项目的docs目录下创建层级目录overrides/partials,用于存放自定义的主题模板文件。 - 配置自定义模板路径
在mkdocs.yml中添加配置,指定自定义模板的根目录:
theme: name: material # 替换为你实际使用的主题名称 custom_dir: docs/overrides
- 覆盖版权渲染模板
从你使用的主题源码中找到版权对应的模板文件(mkdocs-material中为partials/copyright.html),将其复制到刚才创建的overrides/partials目录下,修改该文件的内容为你需要的版权格式,直接调用build_date_utc.year变量即可:
<div class="copyright"> © 2017 - {{ build_date_utc.year }} <a href='https://example.org' target='_blank'>Example</a> </div>
如果不想把版权内容硬写在模板里,也可以用占位符替换的方式实现:
- 先在
mkdocs.yml中配置版权,用自定义占位符代替年份:
copyright: "© 2017 - {current_year} <a href='https://example.org' target='_blank'>Example</a>"
- 再修改
copyright.html模板,用Jinja过滤器替换占位符:
<div class="copyright"> {{ config.copyright.replace("{current_year}", build_date_utc.year) }} </div>
重新执行mkdocs build后,生成的页面就会自动渲染构建时的年份了。
内容的提问来源于stack exchange,提问作者Irina S.
相关产品推荐
相关产品推荐

