文档主题
页面配置

页面配置

在 Nextra 中,可以通过配置_meta.json文件来配置站点和页面结构。在文档主题中,有一些额外的选项可用于进一步自定义它。

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

页面

pages文件下创建以.mdx后缀的文件,它是可以书写 markdown 语法和js语法

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

    • _meta.json
    • index.mdx
    • contact.mdx
    • about.mdx
  • 您可以通过_meta.json文件定义页面在侧边栏中的显示方式

    _meta.json
    {
      "index": "首页",
      "contact": "联系我们",
      "about": "关于"
    }

    文件夹

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

    • _meta.json
    • index.mdx
    • contact.mdx
    • about.mdx
      • _meta.json
      • apple.mdx
      • banana.mdx
  • 顶级_meta.json文件包含顶级页面和文件夹的元元素(导航栏名称):

    pages/_meta.json
    {
      "index": "首页",
      "contact": "联系我们",
      "about": "关于"
      "fruits": "水果"
    }

    同理,嵌套的_meta.json文件包含同一文件夹中页面的元信息:

    pages/fruits/_meta.json
    {
      "apple": "苹果",
      "banana": "香蕉"
    }

    这样,页面的信息就被分组到目录中。您可以移动目录而无需更改_meta.json 文件。

    外部链接

    在导航菜单中添加外部链接,通过设置_meta.json中的href属性

    pages/_meta.json
    {
      "github_link": {
        "title": "SimpleLife", // 设置菜单名
        "href": "https://github.com/SimpleLifecst/nextra-template"
      }
    }

    要始终在新窗口中打开链接,请启用newWindow:true选项:

    pages/_meta.json
    {
      "github_link": {
        "title": "SimpleLife",
        "href": "https://github.com/SimpleLifecst/nextra-template",
        "newWindow": true
      }
    }

    隐藏菜单

    默认情况下,pages下的 MDX 文件页面都将显示在菜单栏上,如果你需要隐藏一个特殊的菜单,你可以在_meta.json设置"display":"hidden"

    pages/_meta.json
    {
      "index": "首页",
      "contact": {
        "display": "hidden"
      },
      "about": "关于"
    }

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

    导航栏

    子文档

    配置_meta.json"type":"page"属性,它将在导航栏上显示为特殊页面,而不是侧边栏。使用此功能,您可以拥有多个“子文档”,以及始终可见的特殊页面或链接,例如“关于”。

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

    pages/_meta.json
    {
      "index": {
        "title": "Home",
        "type": "page"
      },
      "about": {
        "title": "About",
        "type": "page"
      }
    }

    它的效果像这样:

    Preview

    菜单

    配置"type":"menu"设置为菜单,通过配置items来添加到导航栏的子项中 :

    Preview
    pages/_meta.json
    {
      "company": {
        "title": "Company",
        "type": "menu",
        "items": {
          "about": "关于"
          "contact": "联系我们"
        }
      }
    }

    链接

    与外部链接配置相同,您也可以在导航栏中配置外部链接:

    pages/_meta.json
    {
      "contact": {
        "title": "Contact Us",
        "type": "page",
        "href": "https://example.com/contact",
        "newWindow": true
      }
    }

    后备预案

    在上面的子文档示例中,我们必须为每个页面定义"type":"page"选项。为了方便起见,您可以使用*键来定义此文件夹中所有项目的后备配置:

    pages/_meta.json
    {
      "*": {
        "type": "page"
      },
      "index": "首页",
      "about": "关于"
    }

    当所有项目都设置了"type":"page"时,它们是等效的。

    分隔符

    您可以使用占位符"type":"separator"在侧边栏菜单之间创建分隔线:

    pages/_meta.json
    {
      "index": "首页",
      "---": {
        "type": "separator"
      },
      "about": "关于"
    }

    高级

    主题组件

    您可以使用theme属性为每个页面配置主题。例如,您可以禁用或启用特定页面的特定组件: breadcrumb页面面包屑、footer底部版权信息、sidebar侧边栏、toc右侧目录、pagination翻页功能

    pages/_meta.json
    {
      "index": {
        "title": "首页",
        "theme": {
          "breadcrumb": false,
          "footer": false,
          "sidebar": false,
          "toc": true,
          "pagination": false
        }
      }
    }

    如果设置的是文件夹,所有子页面都将继承此属性。

    布局

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

    原始布局

    默认情况下,Nextra 会为 MDX 内容提供样式(如 h1、h2、h3 等),设置布局"layout":"raw",您可以使用最原始的布局,Nextra 不会额外注入样式,这样您可以更好的设计页面。

    pages/_meta.json
    {
      "index": {
        "title": "首页",
        "theme": {
          "layout": "raw"
        }
      }
    }

    完全布局

    您可能希望渲染一些具有完全容器宽度和高度的页面(将去掉目录右侧栏),这将但保留所有其他样式。您可以配置"layout":"full"来做到这一点:

    pages/_meta.json
    {
      "index": {
        "title": "首页",
        "theme": {
          "layout": "full"
        }
      }
    }

    排版

    typesetting控制排版细节,如字体特征、标题样式以及licode等组件。文档主题中有defaultarticle两种排版。

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

    pages/_meta.json
    {
      "about": {
        "title": "关于",
        "theme": {
          "typesetting": "article"
        }
      }
    }