使用多個側邊欄
你可以為每個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'],
};
瀏覽 commonDoc
時,Docusaurus 要如何判斷哪個側欄應該顯示?答案:它無法判斷,我們也沒有保證會選哪個側欄。
當你將文件 Y 新增到側欄 X 時,會建立雙向繫結:側欄 X 包含文件 Y 的連結,瀏覽文件 Y 時,會顯示側欄 X。不過,有時候我們會想要中斷任一隱含繫結
- 我要如何在側欄 X 中建立文件 Y 的連結,卻不讓側欄 X 在 Y 中顯示?例如,當我在多個側欄中包含文件 Y,如同上述範例,我希望明確告知 Docusaurus 顯示其中一個側欄時?
- 我要如何在瀏覽文件 Y 時顯示側欄 X,但側欄 X 不應該包含文件的連結?例如,當 Y 是「文件首頁」而側欄純粹用於導覽時?
Front Matter 選項 displayed_sidebar
會強制設定側欄關聯。以同樣的範例來說,你可以繼續使用文件簡寫,而無需任何特別設定
export default {
tutorialSidebar: {
'Category A': ['doc1', 'doc2'],
},
apiSidebar: ['doc3', 'doc4'],
};
然後新增 Front Matter
---
displayed_sidebar: apiSidebar
---
這會明確告知 Docusaurus,在瀏覽 commonDoc
時,顯示 apiSidebar
。使用相同的方法,你可以讓不包含文件 Y 的側欄 X 顯示在文件 Y 中
---
displayed_sidebar: tutorialSidebar
---
就算 tutorialSidebar
未包含 home
的連結,在檢視 home
時,它仍然會顯示。
如果你設定 displayed_sidebar: null
,這頁將不會顯示任何側欄,且不會有分頁。
產生分頁
Docusaurus 使用側欄在每個文件頁面底部產生「下一個」和「上一個」分頁連結。它只使用已顯示的側欄:如果未關聯任何側欄,它也不會產生分頁。不過,「下一個」和「上一個」所連結的文件,並非保證會顯示相同的側欄:它們是包含在這個側欄中,但它們的 Front Matter 中,可能有不同的 displayed_sidebar
。
如果透過設定 displayed_sidebar
Front Matter 來顯示側欄,而此側欄不包含文件本身,則不會顯示分頁。
你可以透過 Front Matter pagination_next
和 pagination_prev
來自訂分頁。請考慮下列側欄
export default {
tutorial: [
'introduction',
{
installation: ['windows', 'linux', 'macos'],
},
'getting-started',
],
};
「Windows」的分頁連結指向「Linux」,這並不合邏輯:您會希望讀者在安裝後開始「入門」。在此情況下,您可以手動設定分頁
---
pagination_next: getting-started
---
# Installation on Windows
您也可以使用 `pagination_next: null` 或 `pagination_prev: null` 停用顯示分頁連結。
預設的分頁標籤,即側欄標籤。您可以使用 YAML 慣例 `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
會在分頁產生中被忽略)