Aller au contenu principal
Version : 3.4.0

ÉlĂ©ments de la barre latĂ©rale

Nous avons introduit trois types d'Ă©lĂ©ments dans l'exemple dans la section prĂ©cĂ©dente : doc, category et link, dont l'utilisation est assez intuitive. Nous prĂ©senterons explicitement leurs API. Il y a aussi un quatriĂšme type : autogenerated, que nous expliquerons plus en dĂ©tail plus tard.

  • Doc : lien vers une page de doc, l'associant Ă  la barre latĂ©rale
  • Link : lien vers une page interne ou externe
  • Category : crĂ©e un menu dĂ©roulant des Ă©lĂ©ments de la barre latĂ©rale
  • Autogenerated : gĂ©nĂšre automatiquement une barre latĂ©rale
  • HTML : rend du HTML pur dans la position de l'Ă©lĂ©ment
  • *Ref : lien vers une page de doc, sans faire participer l'Ă©lĂ©ment Ă  la gĂ©nĂ©ration de la navigation

Utilisez le type doc pour créer un lien vers une page doc et ajouter ce doc à une barre latérale :

type SidebarItemDoc =
// Syntaxe normale
| {
type: 'doc';
id : string;
label: string; // Texte libellé de la barre latérale
className?: string; // Nom de la classe pour le libellé de la barre latérale
customProps?: Record<string, unknown>; // props personnalisés
}

// Syntaxe abrégée
| string ; // raccourci docId

Exemple :

sidebars.js
export default {
mySidebar: [
// Syntaxe normale :
{
type: 'doc',
id: 'doc1', // ID du document
label: 'Pour commencer', // libellé de la barre latérale
},

// Syntaxe abrĂ©gĂ©e :
'doc2', // ID du document
],
};

Si vous utilisez le raccourci de doc ou la barre latĂ©rale autogenerated, vous perdrez la possibilitĂ© de personnaliser l'Ă©tiquette de la barre latĂ©rale Ă  travers la dĂ©finition de l'Ă©lĂ©ment. Vous pouvez toutefois utiliser sidebar_label du front matter Markdown au sein de ce doc, qui a une prioritĂ© supĂ©rieure Ă  la clĂ© label dans l'Ă©lĂ©ment de la barre latĂ©rale. De mĂȘme, vous pouvez utiliser sidebar_custom_props pour dĂ©clarer des mĂ©tadonnĂ©es personnalisĂ©es pour une page de doc.

remarque

Un Ă©lĂ©ment doc dĂ©finit une association implicite de barre latĂ©rale. N'affectez pas le mĂȘme doc Ă  plusieurs barres latĂ©rales : utilisez plutĂŽt un ref.

astuce

Les props personnalisés de la barre latérale sont un moyen utile de propager des métadonnées arbitraires sur les documents du cÎté client, afin que vous puissiez obtenir des informations supplémentaires lorsque vous utilisez un hook lié aux documents qui récupÚre un objet doc.

Utilisez le type link pour créer un lien vers une page (interne ou externe) qui n'est pas un doc.

type SidebarItemLink = {
type: 'link';
label: string;
href: string;
className?: string;
description?: string;
};

Exemple :

sidebars.js
export default {
myLinksSidebar: [
// Lien externe
{
type: 'link',
label: 'Facebook', // Le libellé du lien
href: 'https://facebook.com', // L'URL externe
},

// Lien interne
{
type: 'link',
label: 'Accueil', // Le libellé du lien
href: '/', // Le chemin interne
},
],
};

Utilisez le type html pour afficher du HTML personnalisé dans la balise <li> de l'élément.

Cela peut ĂȘtre utile pour insĂ©rer des Ă©lĂ©ments personnalisĂ©s tels que des divisions, des titres de section, des publicitĂ©s et des images.

type SidebarItemHtml = {
type: 'html';
value: string;
defaultStyle?: boolean; // Utiliser les styles de l'élément du menu par défaut
className?: string;
};

Exemple :

sidebars.js
export default {
myHtmlSidebar: [
{
type: 'html',
value: '<img src="sponsor.png" alt="Sponsor" />', // Le HTML Ă  rendre
defaultStyle: true, // Utilise le style par défaut des éléments du menu
},
],
};
astuce

L'Ă©lĂ©ment du menu est dĂ©jĂ  enveloppĂ© dans une balise <li>, donc si votre Ă©lĂ©ment personnalisĂ© est simple, comme un titre, il suffit de fournir une chaĂźne comme valeur et d'utiliser la propriĂ©tĂ© className pour le styliser :

sidebars.js
export default {
myHtmlSidebar: [
{
type: 'html',
value: 'Concepts de base',
className: 'sidebar-title',
},
],
};

Utilisez le type category pour créer une hiérarchie des éléments de la barre latérale.

type SidebarItemCategory = {
type: 'category';
label: string; // Texte du libellé de la barre latérale.
items: SidebarItem[]; // Tableau d'éléments de la barre latérale.
className?: string;
description?: string;

// Options de catĂ©gorie :
collapsible: boolean; // Configure la catégorie pour qu'elle soit repliable
collapsed: boolean; // Configure la catégorie pour qu'elle soit initialement réduite ou ouverte par défaut
link: SidebarItemCategoryLinkDoc | SidebarItemCategoryLinkGeneratedIndex;
};

Exemple :

sidebars.js
export default {
docs: [
{
type: 'category',
label: 'Guides',
collapsible: true,
collapsed: false,
items: [
'creating-pages',
{
type: 'category',
label: 'Docs',
items: ['introduction', 'sidebar', 'markdown-features', 'versioning'],
},
],
},
],
};
astuce

Utilisez la syntaxe raccourci lorsque vous n'avez pas besoin de personnalisations :

sidebars.js
export default {
docs: {
Guides: [
'creating-pages',
{
Docs: ['introduction', 'sidebar', 'markdown-features', 'versioning'],
},
],
},
};

Avec les liens de catégorie, un clic sur une catégorie peut vous faire accéder à une autre page.

astuce

Utilisez les liens de catégorie pour introduire une catégorie de documents.

Les catégories générées automatiquement peuvent utiliser le fichier _category_.yml pour déclarer le lien.

Page d'index gĂ©nĂ©rĂ©e​

Vous pouvez générer automatiquement une page d'index qui affiche tous les enfants directs de cette catégorie. Le slug vous permet de personnaliser la route de la page générée, qui par défaut est /category/[categoryName].

sidebars.js
export default {
docs: [
{
type: 'category',
label: 'Guides',
link: {
type: 'generated-index',
title: 'Guides de Docusaurus',
description: 'En savoir plus sur les concepts Docusaurus les plus importants !',
slug: '/category/docusaurus-guides',
keywords: ['guides'],
image: '/img/docusaurus.png',
},
items: ['pages', 'docs', 'blog', 'search'],
},
],
};

Voyez-la en action dans la page des Guides Docusaurus.

astuce

Utilisez les liens generated-index comme moyen rapide d'obtenir un document d'introduction.

Une catégorie peut créer un lien vers un document existant.

sidebars.js
export default {
docs: [
{
type: 'category',
label: 'Guides',
link: {type: 'doc', id: 'introduction'},
items: ['pages', 'docs', 'blog', 'search'],
},
],
};

Voyez-la en action sur la page d'introduction i18n.

IntĂ©gration de l'index gĂ©nĂ©rĂ© dans une page de doc​

Vous pouvez également intégrer la liste de cartes générée dans une page de doc ordinaire avec le composant DocCardList. Elle affichera tous les éléments de la barre latérale de la catégorie parente du document courant.

docs/sidebar/index.md
import DocCardList from '@theme/DocCardList';

<DocCardList />

CatĂ©gories repliables​

Nous prenons en charge l'option permettant de développer/réduire les catégories. Les catégories sont repliables par défaut, mais vous pouvez désactiver le pliage avec collapsible: false.

sidebars.js
export default {
docs: [
{
type: 'category',
label: 'Guides',
items: [
'creating-pages',
{
type: 'category',
collapsible: false,
label: 'Docs',
items: ['introduction', 'sidebar', 'markdown-features', 'versioning'],
},
],
},
],
};

Pour rendre toutes les catĂ©gories non pliables par dĂ©faut, dĂ©finissez l'option sidebarCollapsible dans plugin-content-docs Ă  false :

docusaurus.config.js
export default {
presets: [
[
'@docusaurus/preset-classic',
{
docs: {
sidebarCollapsible: false,
},
},
],
],
};
remarque

L'option dans sidebars.js a la priorité sur la configuration du plugin, il est donc possible de rendre certaines catégories pliables lorsque sidebarCollapsible est défini à false globalement.

CatĂ©gories dĂ©veloppĂ©es par dĂ©faut​

Les catĂ©gories repliables sont rĂ©duites par dĂ©faut. Si vous voulez qu'elles soient dĂ©veloppĂ©es au premier rendu, vous pouvez dĂ©finir collapsed Ă  false :

sidebars.js
export default {
docs: {
Guides: [
'creating-pages',
{
type: 'category',
label: 'Docs',
collapsed: false,
items: ['markdown-features', 'sidebar', 'versioning'],
},
],
},
};

Similaire à collapsible, vous pouvez également définir la configuration globale options.sidebarCollapsed à false. Les options individuelles collapsed dans sidebars.js auront toujours la priorité sur cette configuration.

docusaurus.config.js
export default {
presets: [
[
'@docusaurus/preset-classic',
{
docs: {
sidebarCollapsed: false,
},
},
],
],
};
attention

Lorsqu'une catégorie a collapsed: true mais collapsible: false (soit par sidebars.js, soit par la configuration du plugin), ce dernier prend le dessus et la catégorie est toujours rendue comme développée.

Utilisation de raccourcis​

Vous pouvez exprimer les éléments typiques de la barre latérale sans beaucoup de personnalisation de maniÚre plus concise avec des syntaxes de raccourci. Il y a deux éléments à ce sujet : raccourcis de doc et raccourcis de catégorie.

Raccourci de doc​

Un Ă©lĂ©ment de type doc peut ĂȘtre simplement une chaĂźne reprĂ©sentant son ID :

sidebars.js
export default {
sidebar: [
{
type: 'doc',
id: 'myDoc',
},
],
};

Il est donc possible de simplifier l'exemple ci-dessus ainsi :

sidebars.js
export default {
mySidebar: [
{
type: 'category',
label: 'Pour commencer',
items: [
'doc1',
],
},
{
type: 'category',
label: 'Docusaurus',
items: [
'doc2',
'doc3',
],
},
{
type: 'link',
label: 'En savoir plus',
href: 'https://example.com',
},
],
};

Raccourci de catĂ©gorie​

Un Ă©lĂ©ment de catĂ©gorie peut ĂȘtre reprĂ©sentĂ© par un objet dont la clĂ© est son label, et la valeur est un tableau de sous-Ă©lĂ©ments.

sidebars.js
export default {
sidebar: [
{
type: 'category',
label: 'Pour commencer',
items: ['doc1', 'doc2'],
},
],
};

Cela nous permet de simplifier cet exemple en :

sidebars.js
export default {
mySidebar: [
{
'Pour commencer': ['doc1'],
},
{
Docusaurus: ['doc2', 'doc3'],
},
{
type: 'link',
label: 'En savoir plus',
href: 'https://example.com',
},
],
};

Chaque objet raccourci aprĂšs cette transformation contiendra exactement une entrĂ©e. ConsidĂ©rez maintenant l'exemple simplifiĂ© ci-dessous :

sidebars.js
export default {
mySidebar: [
{
'Pour commencer': ['doc1'],
Docusaurus: ['doc2', 'doc3'],
},
{
type: 'link',
label: 'En savoir plus',
href: 'https://example.com',
},
],
};

Notez comment les deux catĂ©gories consĂ©cutives sont comprimĂ©es en un seul objet avec deux entrĂ©es. Cette syntaxe gĂ©nĂšre une section de barre latĂ©rale : vous ne devez pas voir cet objet comme un Ă©lĂ©ment en vrac - cet objet est dĂ©pliĂ©, chaque entrĂ©e devenant un Ă©lĂ©ment distinct, et ils sont raccordĂ©s ensemble avec le reste des Ă©lĂ©ments (dans ce cas, le lien « En savoir plus Â») pour former le niveau final de la barre latĂ©rale. Les sections de barres latĂ©rales sont Ă©galement importantes lorsqu'on parle de barres latĂ©rales autogĂ©nĂ©rĂ©es.

Chaque fois que vous avez un tableau d'éléments qui est réduit à un arcccourci d'une catégorie, vous pouvez également omettre le tableau qui l'entoure.

sidebars.js
export default {
sidebar: [
{
'DĂ©marrage': ['doc1'],
Docusaurus: [
{
'Guides de base': ['doc2', 'doc3'],
'Guides avancés': ['doc4', 'doc5'],
},
],
},
],
};