配置概览
所有站点配置集中在 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 子栏目)
navigation.json — 导航菜单
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.logo | Logo 图片 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,// ...};新增栏目时,需要同时:
- 在
sections.json中添加栏目/subsection 条目 - 在
content.config.ts中定义集合并导出 - 在对应的
src/content/下创建目录和 MDX 文件