Skip to content

首页配置

侧边栏布局方向

js
themeConfig:{
  blog:{
    direct: 'lft' // 或者 'rgt' 侧边栏在左边或右边
  }
}

用户信息栏

js
themeConfig:{
  blog:{
    user: {
      name: 'My Awesome Blog',       // 昵称
      describe: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', // 签名
      avatar: '/path/to/avatar.jpg'  // 头像
    }
  },
}

隐藏侧边栏(纯模式)

如果你希望隐藏左侧边栏,专注于文章内容,可以启用纯模式:

js
themeConfig:{
  blog:{
    pureMode: true // 隐藏左边栏,默认为 false
  }
}

文章分页

优先读取 blog.pageSize,未设置时回退到 home.postsPerPage。

ts
import { defineConfigWithTheme } from 'vitepress'
export default defineConfigWithTheme({
  themeConfig:{
    blog:{
      pageSize: 5, // 每页显示文章数量
    },
    home: {
      postsPerPage: 5 // 备用:当 blog.pageSize 未设置时生效
    }
  }
})

标签组件栏

  • 首页标签栏显示数量由 home.maxTagsDisplayed 控制。
js
themeConfig:{
  home:{
    maxTagsDisplayed: 5,               // 首页标签栏显示的最大标签数量
  },
}

分类栏

  • 分类自动从 posts 目录结构中提取:/posts/<目录名>/xxx.md 会归属到对应目录名;直接位于 /posts 根目录的文章归类为“其他”。
  • 当前选中的分类会与 URL 同步(?category=xxx),与标签和分页兼容。
  • 切换标签或分类时会自动回到第 1 页。

自定义组件栏

支持全局 widgets 与单页面 widgets 叠加渲染(单页在 frontmatter 中配置)。

  • 全局配置:
ts
// .vitepress/config.ts
import { defineConfigWithTheme } from 'vitepress'
export default defineConfigWithTheme({
  themeConfig: {
    blog: {
      widgets: [
        { name: '广告位', link: 'https://example.com', html: '<div>AD</div>' },
      ]
    }
  }
})
  • 单页面配置:
md
---
widgets:
  - name: "🍰示例"
    link: "/guide/1-config/0-home.html#自定义组件栏"
    html: "<div id='custom1'></div>"
---

在页面脚本中,你可以渲染 Vue 组件到自定义容器中,详见本仓库的示例。