跳转到内容

首页配置

首页配置决定了网站首页的展示内容:每页显示多少篇文章、突出展示哪些分类。所有配置都在 src/theme.config.tshome 字段中。

如果你刚开始使用主题,可以只配置这两项:

src/theme.config.ts
export default defineConfig({
// ...
home: {
pageSize: 5, // 每页显示 5 篇文章
selectedCategories: [ // 突出显示两个分类
{ name: "Tutorial" },
{ name: "Frontend" },
],
},
});

效果:

  • 首页和分页页面每页显示 5 篇普通文章(置顶文章不计入)
  • 首页顶部会展示”Tutorial”和”Frontend”两个分类的卡片

pageSize 控制每页显示多少篇文章。

如果不配置,默认每页显示 10 篇文章

根据你的文章长度和首屏高度,调整合适的数量:

src/theme.config.ts
export default defineConfig({
home: {
pageSize: 8, // 每页显示 8 篇
},
});

如果你的文章设置了 sticky: true(置顶),它们会优先显示在首页顶部,不占用 pageSize 的配额。

例如:

  • 你有 3 篇置顶文章
  • pageSize: 5
  • 首页实际显示:3 篇置顶 + 5 篇普通 = 共 8 篇文章

配置突出显示的分类(selectedCategories)

Section titled “配置突出显示的分类(selectedCategories)”

selectedCategories 用于在首页顶部展示特定分类的卡片,帮助访问者快速找到你的核心内容。

假设你的博客有”教程""前端""后端”等分类,你想突出展示”教程”和”前端”:

src/theme.config.ts
export default defineConfig({
home: {
selectedCategories: [
{ name: "Tutorial" },
{ name: "Frontend" },
],
},
});

分类来自文章 frontmatter 的 categories 字段。例如:

src/posts/my-post.md
---
title: 我的文章
categories:
- Tutorial
- Frontend
---

你可以查看 src/posts/ 目录下的文章,看看它们都使用了哪些分类名称。

如果你不想在首页显示分类卡片,有两种方式:

方式 A:不配置 selectedCategories(推荐)

src/theme.config.ts
export default defineConfig({
home: {
pageSize: 5,
// 不配置 selectedCategories
},
});

方式 B:设为空数组

src/theme.config.ts
export default defineConfig({
home: {
selectedCategories: [], // 明确不显示
},
});

你可以为每个分类卡片设置自定义封面图,让首页更有视觉冲击力:

src/theme.config.ts
export default defineConfig({
home: {
selectedCategories: [
{
name: "Tutorial",
cover: "/images/tutorial-cover.jpg", // public 路径
},
{
name: "Frontend",
cover: "https://example.com/frontend.jpg", // 远程 URL
},
],
},
});
  • public 路径:把图片放到 public/images/ 目录,配置中填写 /images/xxx.jpg
  • 远程 URL:直接填写完整的图片地址,如 https://...
  • 不设置:分类卡片会使用默认渐变背景(非常美观,推荐保持默认)
字段类型默认值说明
pageSizenumber10每页显示的文章数量(不含置顶文章)。
selectedCategoriesArray[]首页突出显示的分类列表。
selectedCategories[].namestring-必填。分类名称(需与文章中一致)。
selectedCategories[].coverstring-可选。分类封面图片(public 路径或 URL)。

首页的完整展示顺序如下:

  1. 置顶文章区(如果有)
  2. 分类卡片区(如果配置了 selectedCategories
  3. 最新文章区(根据 pageSize 显示)
  4. 分页导航(如果文章数量超过 pageSize

一个典型的首页配置:

src/theme.config.ts
export default defineConfig({
siteName: "我的博客",
// ... 其他配置
home: {
pageSize: 6,
selectedCategories: [
{ name: "教程" },
{ name: "前端开发" },
{ name: "随笔", cover: "/images/essay-cover.jpg" },
],
},
});

Q: 为什么配置了 selectedCategories,但首页不显示分类卡片?

Section titled “Q: 为什么配置了 selectedCategories,但首页不显示分类卡片?”

检查以下几点:

  1. 分类名称是否与文章中的分类完全一致(区分大小写、空格)
  2. 该分类下是否有已发布的文章(draft: false 或未设置 draft)
  3. 浏览器是否缓存了旧页面(尝试硬刷新 Ctrl+F5)

Q: 置顶文章太多,首页太长怎么办?

Section titled “Q: 置顶文章太多,首页太长怎么办?”

置顶文章会全部显示在首页顶部,建议控制在 3 篇以内。如果确实有很多重要文章需要突出,可以考虑:

  • 只保留最重要的 2-3 篇置顶
  • 其他文章通过分类卡片或精选标签来组织

Q: 可以设置不同页面使用不同的 pageSize 吗?

Section titled “Q: 可以设置不同页面使用不同的 pageSize 吗?”

目前 pageSize 是全局配置,首页和所有分页页面使用相同的数量。如果需要更灵活的配置,需要修改 src/pages/index.astrosrc/pages/page/[page].astro

津 ICP 备2022001375 号
津公网安备 12011402001353 号