Nextra 3.0 已发布。 阅读更多
文档文档主题页面配置

页面配置

在 Nextra 中,站点和页面结构可以通过共置的 _meta.js 文件进行配置。在文档主题中,提供了一些额外的选项来进一步自定义它。

这些配置会影响主题的整体布局,特别是导航栏和侧边栏。

💡

阅读有关 Nextra 的 _meta.js 文件的更多信息 此处

页面

在侧边栏中显示的页面的标题和顺序应在 _meta.js 文件中配置为键值对。例如,如果您有以下文件结构

    • _meta.js
    • about.mdx
    • contact.mdx
    • index.mdx

您可以通过 _meta.js 文件定义页面在侧边栏中的显示方式

_meta.js
export default {
  index: 'My Homepage',
  contact: 'Contact Us',
  about: 'About Us'
}
💡

如果任何路由未在 _meta.js 文件中列出,它们将附加到侧边栏的末尾并按字母顺序排序,标题将使用 Title 根据文件名进行格式化。

文件夹

文件夹的配置方式与页面相同。例如

      • _meta.js
      • apple.mdx
      • banana.mdx
    • _meta.js
    • about.mdx
    • contact.mdx
    • index.mdx

顶级 _meta.js 文件包含顶级页面和文件夹的元信息

pages/_meta.js
export default {
  index: 'My Homepage',
  contact: 'Contact Us',
  fruits: 'Delicious Fruits',
  about: 'About Us'
}

嵌套的 _meta.js 文件包含同一文件夹中页面的元信息

pages/fruits/_meta.js
export default {
  apple: 'Apple',
  banana: 'Banana'
}

这样,页面信息就会在目录中进行分组。您可以移动目录,而无需更改 _meta.js 文件。

包含索引页的文件夹

如果我想拥有一个包含索引页的文件夹怎么办?我们可以在与文件夹同名且在同一目录中添加一个 MDX 页面。假设我们想在上面的示例中添加 /fruits 路由,我们可以在 pages 中创建一个 fruits.mdx 文件

      • _meta.js
      • apple.mdx
      • banana.mdx
    • _meta.js
    • about.mdx
    • contact.mdx
    • fruits.mdx
    • index.mdx

然后 Nextra 就会知道 _meta.js 中的 fruits 键定义了一个包含索引页的文件夹。如果您在侧边栏中单击该文件夹,它将打开该文件夹并同时显示 fruits.mdx 页面。

您可以通过在 _meta.js 中添加包含 href 的项目来向侧边栏添加外部链接

pages/_meta.js
export default {
  index: 'My Homepage',
  contact: 'Contact Us',
  fruits: 'Delicious Fruits',
  about: 'About Us',
  github_link: {
    title: 'Nextra',
    href: 'https://github.com/shuding/nextra'
  }
}

要始终在新标签页中打开链接,请启用 "newWindow": true 选项

pages/_meta.js
export default {
  index: 'My Homepage',
  contact: 'Contact Us',
  fruits: 'Delicious Fruits',
  about: 'About Us',
  github_link: {
    title: 'Nextra',
    href: 'https://github.com/shuding/nextra',
    newWindow: true
  }
}
💡

您也可以使用此选项链接到相对内部链接。

隐藏路由

默认情况下,文件系统中的所有 MDX 路由都将在侧边栏中显示。但是,您可以使用 "display": "hidden" 配置隐藏特定页面或文件夹

pages/_meta.js
export default {
  index: 'My Homepage',
  contact: {
    display: 'hidden'
  },
  about: 'About Us'
}

该页面仍然可以通过 /contact URL 访问,但它不会显示在侧边栏中。

子文档

通过将顶级页面或文件夹定义为 "type": "page",它将作为导航栏上的特殊页面显示,而不是侧边栏。使用此功能,您可以拥有多个“子文档”,以及始终可见的特殊页面或链接,例如“联系我们”。

例如,您可以在项目中拥有 2 个文档文件夹 frameworksfruits

      • react.mdx
      • svelte.mdx
      • vue.mdx
      • apple.mdx
      • banana.mdx
    • _meta.js
    • about.mdx
    • index.mdx

在您的顶级 _meta.js 文件中,您可以将所有内容设置为页面,而不是普通的侧边栏项目

pages/_meta.js
export default {
  index: {
    title: 'Home',
    type: 'page'
  },
  frameworks: {
    title: 'Frameworks',
    type: 'page'
  },
  fruits: {
    title: 'Fruits',
    type: 'page'
  },
  about: {
    title: 'About',
    type: 'page'
  }
}

它看起来像这样

您还可以使用 "display": "hidden" 选项从导航栏隐藏 Home 等链接。

您还可以使用 "type": "menu""items" 选项向导航栏添加菜单

Navbar menu
pages/_meta.js
export default {
  company: {
    title: 'Company',
    type: 'menu',
    items: {
      about: {
        title: 'About',
        href: '/about'
      },
      contact: {
        title: 'Contact Us',
        href: 'mailto:[email protected]'
      }
    }
  }
}

外部链接 选项相同,您也可以在导航栏中使用外部链接

pages/_meta.js
export default {
  index: {
    title: 'Home',
    type: 'page'
  },
  about: {
    title: 'About',
    type: 'page'
  },
  contact: {
    title: 'Contact Us',
    type: 'page',
    href: 'https://example.com/contact',
    newWindow: true
  }
}

回退

在上面的 子文档 示例中,我们必须为每个页面定义 "type": "page" 选项。为了简化操作,您可以使用 "*" 键为该文件夹中的所有项目定义回退配置

pages/_meta.js
export default {
  '*': {
    type: 'page'
  },
  index: 'Home',
  frameworks: 'Frameworks',
  fruits: 'Fruits',
  about: 'About'
}

它们是等效的,其中所有项目都设置了 "type": "page"

分隔符

您可以使用一个带有 "type": "separator" 的“占位符”项目在侧边栏中的项目之间创建分隔线

_meta.js
export default {
  index: 'My Homepage',
  '---': {
    type: 'separator'
  },
  contact: 'Contact Us'
}

使用 JSX 元素更改侧边栏中标题和分隔线的外观。

高级

主题组件

您可以使用 "theme" 选项为每个页面配置主题。例如,您可以为特定页面禁用或启用特定组件

pages/_meta.js
export default {
  index: {
    title: 'Home',
    theme: {
      breadcrumb: false,
      footer: true,
      sidebar: false,
      toc: true,
      pagination: false
    }
  }
}

如果设置为文件夹,此选项将由所有子页面继承。

布局

默认情况下,每个页面在其主题配置中都有 "layout": "default",这是默认行为。

原始布局

默认情况下,Nextra 会在内容容器内使用主题组件渲染 MDX 内容(例如 h1h2h3 等)。您可以使用 "raw" 布局让 Nextra 不向内容注入任何样式

pages/_meta.js
export default {
  index: {
    title: 'Home',
    theme: {
      layout: 'raw'
    }
  }
}

完整布局

您可能希望使用完整容器宽度和高度渲染某些页面,但保留所有其他样式。您可以使用 "full" 布局来实现

pages/_meta.js
export default {
  index: {
    title: 'Home',
    theme: {
      layout: 'full'
    }
  }
}

排版

"typesetting" 选项控制排版细节,如字体特性、标题样式以及 licode 等组件。文档主题中提供了 "default""article" 排版。

默认选项适用于大多数情况(如文档),但您可以使用 "article" 排版使其看起来像一个优雅的文章页面

pages/_meta.js
export default {
  about: {
    title: 'About Us',
    theme: {
      typesetting: 'article'
    }
  }
}