配置概览

所有站点配置集中在 src/config/ 目录,均为 JSON 格式:

文件用途
sections.json栏目结构、路由映射、颜色配置
navigation.json顶部导航菜单
site.config.json站点名称、域名、SEO 等全局配置
announcements.json首页公告栏
categories.json文章分类定义
footer.json页脚链接与版权信息
ads.json广告位配置

sections.json — 栏目与路由

这是项目的核心路由配置文件,定义了所有栏目和子栏目的层级结构。

CODEjson
{"id": "cloud","title": "云计算","description": "云计算与虚拟化技术","route": "/cloud","icon": "cloud","color": "#00d4aa","subsections": [  {    "id": "ansible",    "title": "Ansible",    "route": "/cloud/ansible",    "articleConfig": "cloud-ansible",    "color": "#00d4aa"  }]}

关键字段:

  • articleConfig — 对应 content.config.ts 中导出的集合名称
  • route — 该栏目的 URL 前缀
  • color — 品牌色,用于文章页面主题色彩
  • sidebarTitle / sidebarDescription — 手册侧边栏描述(仅 manuals 子栏目)
CODEjson
{"brand": {  "name": "ICT学习客栈",  "logo": "https://logo.grbj.cn/ictstu_logo.png",  "link": "/"},"nav": [  {    "text": "首页",    "link": "/",    "key": "home"  },  {    "text": "云计算",    "key": "cloud",    "link": "/cloud",    "children": [      { "text": "Ansible", "link": "/cloud/ansible" }    ]  }]}

字段说明:

字段说明
brand.name站点标题
brand.logoLogo 图片 URL
brand.link点击 Logo 跳转链接
nav[].text菜单项显示文本
nav[].link菜单项链接
nav[].key菜单项唯一标识
nav[].children子菜单项列表

site.config.json — 站点全局

CODEjson
{"site": {  "url": "https://www.ictstu.com",  "name": "ICT学习客栈",  "description": "信息与通信技术(ICT)学习知识库",  "author": "ICT学习客栈"},"baiduAnalytics": {  "id": "<百度统计 ID>"},"seo": {  "ogDefaultImage": "/og-default.png",  "baiduSiteVerification": "<百度站长验证码>"}}

announcements.json — 公告栏

CODEjson
{"enabled": true,"text": "公告文本","link": "/可选跳转链接"}

内容集合配置 (content.config.ts)

这个 TypeScript 文件定义了所有内容集合的加载路径和 Schema。

CODEtypescript
import { defineCollection, z } from 'astro:content';import { glob } from 'astro/loaders';const baseSchema = z.object({title: z.string(),description: z.string().optional(),pubDate: z.union([z.string(), z.date()]).optional(),lastUpdated: z.union([z.string(), z.date()]).optional(),category: z.string().optional(),tags: z.array(z.string()).optional(),brandColor: z.string().optional(),badge: z.object({  text: z.string(),  color: z.string().optional(),}).optional(),recommended: z.boolean().optional(),featured: z.boolean().optional(),author: z.string().optional(),statement: z.string().optional(),showCopyright: z.boolean().optional(),});const cloudAnsible = defineCollection({loader: glob({ pattern: "**/*.mdx", base: "./src/content/cloud/Ansible" }),schema: baseSchema,});// ... 其他集合类似 ...export const collections = {'cloud-ansible': cloudAnsible,// ...};

新增栏目时,需要同时:

  1. sections.json 中添加栏目/subsection 条目
  2. content.config.ts 中定义集合并导出
  3. 在对应的 src/content/ 下创建目录和 MDX 文件