Material for MkDocs 页脚(Footer)配置完全指南:社交链接、版权声明与上一篇/下一篇导航
【免费下载链接】mkdocs-materialDocumentation that simply works项目地址: https://gitcode.com/GitHub_Trending/mk/mkdocs-material
页脚是项目文档页面最容易被忽视、却又极具营销与导航价值的区域。Material for MkDocs 允许通过mkdocs.yml一行配置即可在页脚展示社交平台链接(如 Mastodon、YouTube)、自定义版权横幅与生成器声明,并可开启上一篇/下一篇翻页导航。本文基于当前仓库的官方文档与模板源码,完整讲解页脚的全部配置项、每个social链接属性的取值范围、按页面隐藏页脚的 Front matter 技巧,以及如何通过覆盖 partial 实现完全自定义的版权区域。
页脚由哪些部分组成
在深入配置之前,先明确页脚的结构。Material for MkDocs 的页脚由 src/templates/partials/footer.html 这一个模板渲染,并被 src/templates/base.html 在页面底部引入。从模板结构看,页脚可以分为两个层次:
- 页脚内部导航(
md-footer__inner):仅在启用navigation.footer特性后渲染,用于展示当前页面的上一篇(Previous)与下一篇(Next)链接; - 页脚元信息(
md-footer-meta):始终渲染,内部依次包含版权声明 partial 与社交链接 partial,前者对应 src/templates/partials/copyright.html,后者对应 src/templates/partials/social.html。
因此,页脚的全部能力都可以通过mkdocs.yml中的主题特性、copyright顶级配置和extra命名空间完成,无需编写任何模板代码;只有需要深度定制时才涉及覆盖 partial。
配置:开启上一篇/下一篇导航
页脚可以显示当前页面所属文档的前后翻页链接。要启用这一行为,在mkdocs.yml中添加navigation.footer特性(该特性自 Material for MkDocs 9.0.0 起可用):
theme: features: - navigation.footer从模板实现看,src/templates/partials/footer.html 会先检查"navigation.footer" in features,再判断page.previous_page与page.next_page是否存在,只有前后页存在时才渲染导航区块。页脚的“上一篇/下一篇”文案取自语言翻译文件,例如英文环境下对应 src/templates/partials/languages/en.html 中的footer.previous与footer.next键,因此会随站点语言自动本地化。前后翻页的方向箭头默认使用material/arrow-left与material/arrow-right图标,你也可以通过主题的theme.icon.previous与theme.icon.next配置项替换为任意已捆绑的图标。
注意:
navigation.footer仅控制页脚内部的翻页区块,与导航栏的navigation.tabs、navigation.sections等特性相互独立,可自由组合。
配置:社交链接
社交链接会作为页脚的一部分、紧邻版权声明渲染。在mkdocs.yml中添加extra.social列表即可:
extra: social: - icon: fontawesome/brands/mastodon # (1)! link: https://fosstodon.org/@squidfunk- 输入几个关键词,使用 图标搜索 找到最合适的图标,点击其 shortcode 即可复制到剪贴板(当前仓库的图标搜索功能可直接检索已捆绑的图标集)。
每个社交链接支持以下三个属性,其结构定义在 docs/schema/extra.json 中(icon与link为必填项):
social.icon(必填)
此属性必须指向一个主题捆绑的合法图标路径,否则构建将失败。icon的取值规则与主题内部.icons/目录的目录结构一一对应,常用示例:
| 平台 | 图标路径 |
|---|---|
| GitHub | fontawesome/brands/github |
| GitLab | fontawesome/brands/gitlab |
| X / Twitter | fontawesome/brands/x-twitter |
| Mastodon | fontawesome/brands/mastodon |
| Docker | fontawesome/brands/docker |
fontawesome/brands/facebook | |
fontawesome/brands/instagram | |
fontawesome/brands/linkedin | |
| Slack | fontawesome/brands/slack |
| Discord | fontawesome/brands/discord |
其中Mastodon 图标有特殊行为:查看 src/templates/partials/social.html 的渲染逻辑可以发现,当social.icon中包含mastodon字样时,链接会自动追加rel="me"属性(同时保留noopener),这满足了 Mastodon 官方个人主页验证(Profile Verification)的要求,让文档站点的 Mastodon 链接可以被社交网络识别为本人身份。
social.link(必填)
此属性必须设置为包含 URI scheme 的相对或绝对 URL。所有 URI scheme 均受支持,包括mailto与bitcoin。常见用法示例:
=== "Mastodon"
``` yaml extra: social: - icon: fontawesome/brands/mastodon link: https://fosstodon.org/@squidfunk ```=== "邮箱"
``` yaml extra: social: - icon: fontawesome/solid/paper-plane link: mailto:<email-address> ```social.name(可选)
该属性会被用作链接的title属性(鼠标悬停提示),设置一个可辨识的名称可以显著改善无障碍访问体验。若不设置,模板会尝试从link中自动推导域名作为默认值——从 src/templates/partials/social.html 的实现看,它会将link按//分割取第二部分、再按/分割取第一段,即提取出主机名部分。例如https://fosstodon.org/@squidfunk的默认标题就是fosstodon.org:
extra: social: - icon: fontawesome/brands/mastodon link: https://fosstodon.org/@squidfunk name: squidfunk on Fosstodon渲染时所有社交链接会通过target="_blank"在新标签页打开,rel属性默认包含noopener。
配置:版权声明
页脚中可以渲染一条自定义版权横幅,显示在社交链接旁。版权声明通过mkdocs.yml顶级的copyright键定义(自 0.1.0 起可用):
copyright: Copyright © 2016 - 2020 Martin Donath模板中(src/templates/partials/copyright.html)config.copyright会被包裹在md-copyright__highlight容器中高亮展示,并支持 HTML 实体,因此像©这样的版权符号可以放心使用。当前仓库自身的 mkdocs.yml 就是真实范例:copyright: Copyright © 2016 - 2026 Martin Donath。
配置:生成器声明
页脚默认显示一条Made with Material for MkDocs的生成器声明(自 7.3.0 起可用,默认值为true),用于标识站点的生成方式。若想移除该声明,可在mkdocs.yml中设置:
extra: generator: false其默认值与结构同样定义在 docs/schema/extra.json 的generator项中,而模板侧通过{% if not config.extra.generator == false %}判断是否渲染声明(见 src/templates/partials/copyright.html),因此只有显式设置为false才会隐藏,未配置时默认为显示。
移除生成器声明前请三思:页脚中这行低调的Made with Material for MkDocs提示是该项目广受欢迎的原因之一——它告诉访问者站点是如何生成的,帮助新用户发现并认识这个开源项目。你正在免费享受开源许可带来的全部收益,而该项目背后是成千上万小时的无偿投入,因此在移除前请权衡这一贡献。
使用:按页面隐藏上一篇/下一篇
即使全局开启了navigation.footer,你也可以在单个页面中隐藏页脚的翻页导航。只需在该 Markdown 文件的 Front matter 中添加hide属性并列出footer:
--- hide: - footer --- # Page title ...这一机制由 src/templates/partials/footer.html 实现:模板读取page.meta.hide,当其中包含footer时,为md-footer__inner导航区块设置hidden属性,从而仅隐藏页脚内部的上一篇/下一篇导航,版权声明与社交链接仍正常显示。该隐藏机制同样适用于站点级配置,适合在版权声明页、法律声明页等不需要前后翻页的页面上使用。
自定义:覆盖版权区域实现完全定制
如果你需要比copyright键更复杂的版权呈现(例如加入多行文本、品牌 Logo 或自定义 HTML 结构),可以:
- 按 扩展主题 的方式,在
mkdocs.yml的theme.custom_dir指向的自定义目录中建立与主题同名同结构的目录层级; - 按 覆盖 partial 的方式,覆盖默认的
copyright.htmlpartial,即 src/templates/partials/copyright.html。
覆盖后的 partial 默认仍需自行读取config.copyright来呈现mkdocs.yml中定义的版权内容,但你可以完全改写渲染逻辑,自由组合文本、图标与样式,实现完全自定义的版权区域。类似地,社交链接也可通过覆盖 src/templates/partials/social.html 来调整链接的呈现方式与属性。
小结
页脚配置的全部要点可归纳如下表:
| 功能 | 配置位置 | 默认值 | 引入版本 |
|---|---|---|---|
| 上一篇/下一篇导航 | theme.features中的navigation.footer | 关闭 | 9.0.0 |
| 社交链接 | extra.social(icon、link必填,name可选) | 无 | 1.0.0 |
| 版权声明 | 顶级copyright | 无 | 0.1.0 |
| 生成器声明 | extra.generator | true | 7.3.0 |
| 单页隐藏翻页导航 | 页面 Front matterhide: [footer] | 显示 | — |
以上配置全部通过mkdocs.yml声明式完成,无需接触模板代码;如需更深度的定制,可基于 src/templates/partials/footer.html、src/templates/partials/copyright.html 与 src/templates/partials/social.html 三个模板,结合 docs/schema/extra.json 与 docs/schema/theme.json 中的 JSON Schema 定义,精准把握每个配置项的合法取值,再通过覆盖 partial 实现任意形态的页脚。
【免费下载链接】mkdocs-materialDocumentation that simply works项目地址: https://gitcode.com/GitHub_Trending/mk/mkdocs-material
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考