参考
MkDocs的材料中包含许多出色的功能,使得技术写作成为一种愉快的活动。本文档的这一部分将解释如何设置页面,并展示可以直接从Markdown文件中使用的所有可用示例。
配置
内置的typeset插件
仅限赞助商 · insiders-4.27.0 · 插件 · 实验性
内置的typeset插件在导航和目录中__保留HTML格式__。这意味着现在,代码块、图标、表情符号和其他内联格式将被保留,从而实现更丰富的编辑体验。将以下行添加到mkdocs.yml文件中:
要查看演示,请看一下本页面的目录:代码块和图标都保留在章节标题中;甚至支持内联代码块的高亮显示
内置的meta插件
仅限赞助商 · insiders-4.21.0 · 插件 · 实验性
内置的meta插件允许__为每个文件夹设置前置元数据__,这对于确保文件夹中的所有页面使用特定模板或标签非常方便。将以下行添加到mkdocs.yml文件中:
以下配置选项可用:
meta_file-
默认值:
**/.meta.yml– 此选项指定插件应查找的元数据文件的名称。默认设置假定元数据文件名为.meta.yml:- 请注意,强烈建议在元数据文件前加上
.,否则它们将包含在构建输出中。
- 请注意,强烈建议在元数据文件前加上
用法
设置页面的title
每个页面都有一个指定的标题,用于导航侧边栏、社交卡片和其他地方。虽然MkDocs尝试通过四个步骤的过程自动确定页面的标题,但标题也可以通过前置元数据title属性来显式设置:
设置页面的description
Markdown文件可以包含一个描述,该描述将添加到页面的meta标签中,并且还用于社交卡片。如果作者没有显式为Markdown文件定义描述,建议在mkdocs.yml中设置一个site_description作为默认值:
- 此行将当前页面的
head中包含描述的meta标签设置为提供的值。
设置页面的icon
9.2.0b0 · 实验性
可以为每个页面分配一个图标,该图标将作为导航侧边栏的一部分进行呈现,以及导航选项卡(如果启用)。使用前置元数据icon属性引用一个图标,将以下行添加到Markdown文件的顶部:
-
输入一些关键字,使用我们的图标搜索找到完美的图标,并单击简码将其复制到剪贴板:
设置页面的status
9.2.0b0 · 实验性
可以为每个页面分配一个状态,该状态将作为导航侧边栏的一部分显示。首先,通过将以下内容添加到mkdocs.yml中,将状态标识符与描述关联起来:
-
标识符只能包含字母数字字符,以及破折号和下划线。例如,如果您有一个状态
Recently added,您可以将new设置为标识符:
现在可以使用前置元数据status属性设置页面状态。例如,可以使用以下行将页面标记为new,添加到Markdown文件的顶部:
当前支持以下状态标识符:
- –
new - –
deprecated
设置页面的subtitle
仅限赞助商 · insiders-4.25.0 · 实验性
每个页面可以定义一个副标题,该副标题将作为导航侧边栏的一部分在标题下方呈现。使用前置元数据subtitle属性,并添加以下行:
设置页面的template
如果您正在使用主题扩展并在overrides目录中创建了一个新的页面模板,您可以为特定页面启用它。将以下行添加到Markdown文件的顶部:
如何为整个文件夹设置页面模板?
使用内置的meta插件的帮助,您可以通过在相应文件夹中创建一个.meta.yml文件,并使用以下内容为整个部分和所有嵌套页面设置自定义模板:
自定义
在模板中使用元数据
在所有页面上
为了向文档添加自定义的meta标签,您可以扩展主题并覆盖extrahead块,例如通过robots属性添加搜索引擎的索引策略:
{% extends "base.html" %}
{% block extrahead %}
<meta name="robots" content="noindex, nofollow" />
{% endblock %}
在单个页面上
如果您想在单个页面上设置meta标签,或者想为不同页面设置不同的值,可以在模板覆盖中使用page.meta对象,例如:
{% extends "base.html" %}
{% block extrahead %}
{% if page and page.meta and page.meta.robots %}
<meta name="robots" content="{{ page.meta.robots }}" />
{% else %}
<meta name="robots" content="index, follow" />
{% endif %}
{% endblock %}
现在,您可以像title和description一样使用robots来设置值。请注意,在这种情况下,模板定义了一个else分支,如果没有给出默认值,则会设置默认值。