使用多个侧边栏
您可以为每个您想要组合在一起的 Markdown 文件集合创建一个侧边栏。
考虑这个例子:
export default {
tutorialSidebar: {
'类别 A': ['doc1', 'doc2'],
},
apiSidebar: ['doc3', 'doc4'],
};
浏览 doc1
或 doc2
时,将显示 tutorialSidebar
;浏览 doc3
或 doc4
时,将显示 apiSidebar
。
理解侧边栏关联
按照上面的示例,如果 commonDoc
包含在两个侧边栏中:
export default {
tutorialSidebar: {
'类别 A': ['doc1', 'doc2', 'commonDoc'],
},
apiSidebar: ['doc3', 'doc4', 'commonDoc'],
};
Docusaurus 如何知道在浏览 commonDoc
时显示哪个侧边栏?答案是:它不知道,我们不保证它会选择哪个侧边栏。
当您将文档 Y 添加到侧边栏 X 时,它会创建一个双向绑定:侧边栏 X 包含文档 Y 的链接,并且在浏览文档 Y 时,侧边栏 X 将被显示。但有时,我们希望打破这种隐式绑定:
- 如何在侧边栏 X 中生成文档 Y 的链接,而不使侧边栏 X 在 Y 上显示? 例如,当我在多个侧边栏中包含文档 Y(如上面的示例),并且我希望明确地告诉 Docusaurus 显示一个侧边栏?
- 如何在浏览文档 Y 时显示侧边栏 X,但侧边栏 X 不应包含 Y 的链接? 例如,当 Y 是"文档主页",并且侧边栏仅用于导航?
前置元数据选项 displayed_sidebar
将强制设置侧边栏关联。对于相同的示例,您仍然可以使用文档简写而无需任何特殊配置:
export default {
tutorialSidebar: {
'类别 A': ['doc1', 'doc2'],
},
apiSidebar: ['doc3', 'doc4'],
};
然后添加前置元数据:
---
displayed_sidebar: apiSidebar
---
这明确地告诉 Docusaurus 在浏览 commonDoc
时显示 apiSidebar
。使用相同的方法,您可以使不包含文档 Y 的侧边栏 X 出现在文档 Y 上:
---
displayed_sidebar: tutorialSidebar
---
即使 tutorialSidebar
不包含 home
的链接,它仍将在查看 home
时显示。
如果设置 displayed_sidebar: null
,则此页面上不会显示任何侧边栏,随后也不会显示分页。
生成分页
Docusaurus 使用侧边栏在每个文档页面底部生成"下一页"和"上一页"分页链接。它严格使用显示的侧边栏:如果没有关联的侧边栏,它也不会生成分页。但是,作为"下一页"和"上一页"链接的文档不保证显示相同的侧边栏:它们包含在此侧边栏中,但在其前置元数据中可能有不同的 displayed_sidebar
。
如果通过设置 displayed_sidebar
前置元数据显示侧边栏,并且此侧边栏不包含文档本身,则不会显示分页。
您可以使用前置元数据 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
禁用显示分页链接。
默认情况下,分页标签是侧边栏标签。您可以使用前置元数据 pagination_label
自定义文档在分页中的显示方式。
ref
项目
ref
类型在每个方面都与 doc
类型相同,只是它不参与生成导航元数据。它只是注册自身为一个链接。在生成分页和显示侧边栏时,ref
项目被完全忽略。
当您希望从多个侧边栏链接到同一文档时,它特别有用。文档只属于一个侧边栏(在那里注册为 type: 'doc'
或来自自动生成的目录),但其链接将出现在注册它的所有侧边栏中。
考虑这个例子:
export default {
tutorialSidebar: {
'类别 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
在分页生成中被忽略)