使用多个侧边栏
您可以为要 组合在一起 的每个 Markdown 文件集 创建一个侧边栏。
考虑以下示例:
export default {
tutorialSidebar: {
'Category A': ['doc1', 'doc2'],
},
apiSidebar: ['doc3', 'doc4'],
};
浏览 doc1
或 doc2
时,将显示 tutorialSidebar
;浏览 doc3
或 doc4
时,将显示 apiSidebar
。
理解侧边栏关联
根据上面的示例,如果 commonDoc
包含在两个侧边栏中:
export default {
tutorialSidebar: {
'Category A': ['doc1', 'doc2', 'commonDoc'],
},
apiSidebar: ['doc3', 'doc4', 'commonDoc'],
};
Docusaurus 如何知道在浏览 commonDoc
时显示哪个侧边栏?答案是:它不知道,我们也不能保证它会选择哪个侧边栏。
当您将文档 Y 添加到侧边栏 X 时,它会创建一个双向绑定:侧边栏 X 包含指向文档 Y 的链接,并且当浏览文档 Y 时,将显示侧边栏 X。但有时,我们想打破任一隐式绑定:
- 如何在不显示侧边栏 X 的情况下在侧边栏 X 中生成指向文档 Y 的链接? 例如,当我在上面的示例中将文档 Y 包含在多个侧边栏中时,我想明确告诉 Docusaurus 显示一个侧边栏?
- 如何在浏览文档 Y 时显示侧边栏 X,但侧边栏 X 不包含指向 Y 的链接? 例如,当 Y 是“文档主页”并且侧边栏纯粹用于导航时?
前置 matter 选项 displayed_sidebar
将强制设置侧边栏关联。对于相同的示例,您仍然可以使用文档简写,无需任何特殊配置:
export default {
tutorialSidebar: {
'Category A': ['doc1', 'doc2'],
},
apiSidebar: ['doc3', 'doc4'],
};
然后添加前置 matter:
---
displayed_sidebar: apiSidebar
---
这明确告诉 Docusaurus 在浏览 commonDoc
时显示 apiSidebar
。使用相同的方法,您可以使不包含文档 Y 的侧边栏 X 出现在文档 Y 上:
---
displayed_sidebar: tutorialSidebar
---
即使 tutorialSidebar
不包含指向 home
的链接,在查看 home
时它仍然会显示。
如果您设置 displayed_sidebar: null
,则此页面将不会显示任何侧边栏,随后也不会显示分页。
生成分页
Docusaurus 使用侧边栏在每个文档页面的底部生成“下一个”和“上一个”分页链接。它严格使用显示的侧边栏:如果没有关联侧边栏,它也不会生成分页。但是,链接为“下一个”和“上一个”的文档并不保证显示相同的侧边栏:它们包含在此侧边栏中,但在它们的前置 matter 中,它们可能具有不同的 displayed_sidebar
。
如果通过设置 displayed_sidebar
前置 matter 来显示侧边栏,并且此侧边栏不包含文档本身,则不会显示分页。
您可以使用前置 matter pagination_next
和 pagination_prev
自定义分页。考虑此侧边栏:
export default {
tutorial: [
'introduction',
{
installation: ['windows', 'linux', 'macos'],
},
'getting-started',
],
};
“windows” 上的分页下一个链接指向“linux”,但这没有意义:您希望读者在安装后继续进行“入门”。在这种情况下,您可以手动设置分页:
---
pagination_next: getting-started
---
# 在 Windows 上安装
您还可以使用 pagination_next: null
或 pagination_prev: null
禁用显示分页链接。
分页标签默认情况下是侧边栏标签。您可以使用前置 matter pagination_label
来自定义此文档在分页中的显示方式。
ref
项目
ref
类型在各个方面都与 doc
类型 相同,只是它不参与生成导航元数据。它只将自身注册为一个链接。在 生成分页 和 显示侧边栏 时,ref
项目将被完全忽略。
它在您希望从多个侧边栏链接到同一文档的情况下特别有用。该文档只属于一个侧边栏(它注册为 type: 'doc'
的侧边栏或来自自动生成的目录的侧边栏),但它的链接将出现在它注册的所有侧边栏中。
考虑以下示例:
export default {
tutorialSidebar: {
'Category A': [
'doc1',
'doc2',
{type: 'ref', id: 'commonDoc'},
'doc5',
],
},
apiSidebar: ['doc3', 'doc4', 'commonDoc'],
};
您可以将 ref
类型视为等同于执行以下操作:
- 为
commonDoc
设置displayed_sidebar: tutorialSidebar
(ref
在侧边栏关联中被忽略) - 为
doc2
设置pagination_next: doc5
并为doc5
设置pagination_prev: doc2
(ref
在分页生成中被忽略)