Firefly 主题在导航栏添加新菜单和页面的完整流程
701 字
4 分钟
Firefly 主题在导航栏添加新菜单和页面的完整流程
📁 需要修改/创建的 4 个文件
项目根目录/├── src/│ ├── config/│ │ ├── navBarConfig.ts # 1️⃣ 导航栏配置│ │ └── LinkPresets.ts # 2️⃣ 链接预设(可选)│ ├── content/│ │ ├── config.ts # 3️⃣ 内容集合配置│ │ └── welfare/ # 4️⃣ 内容文件夹│ │ ├── rural-education.md│ │ ├── environment.md│ │ └── animal-rescue.md│ └── pages/│ └── welfare/ # 5️⃣ 页面路由文件夹│ ├── rural-education.astro│ ├── environment.astro│ └── animal-rescue.astro1️⃣ 导航栏配置 (src/config/navBarConfig.ts)
// 添加公益项目菜单links.push({ name: "公益项目", icon: "material-symbols:favorite", children: [ { name: "乡村教育支持", url: "/rural-education/", icon: "material-symbols:school", }, { name: "环境保护计划", url: "/environment/", icon: "material-symbols:forest", }, { name: "动物救助行动", url: "/animal-rescue/", icon: "material-symbols:pets", }, { name: "捐赠渠道", url: "https://hangdn.com", external: true, icon: "material-symbols:volunteer-activism", }, ],});关键点:
- 内部链接:url: “/welfare/xxx/”
- 外部链接:加上 external: true
2️⃣ 链接预设映射 (src/config/LinkPresets.ts) - 可选
如果需要像 LinkPreset.Welfare 那样使用,添加:
import I18nKey from "@i18n/i18nKey";import { i18n } from "@i18n/translation";import { LinkPreset, type NavBarLink } from "@/types/config";
export const LinkPresets: { [key in LinkPreset]: NavBarLink } = { [LinkPreset.Home]: { name: i18n(I18nKey.home), url: "/", icon: "material-symbols:home", }, [LinkPreset.About]: { name: i18n(I18nKey.about), url: "/about/", icon: "material-symbols:person", }, [LinkPreset.Archive]: { name: i18n(I18nKey.archive), url: "/archive/", icon: "material-symbols:archive", }, [LinkPreset.Friends]: { name: i18n(I18nKey.friends), url: "/friends/", icon: "material-symbols:group", }, [LinkPreset.Sponsor]: { name: i18n(I18nKey.sponsor), url: "/sponsor/", icon: "material-symbols:favorite", }, [LinkPreset.Guestbook]: { name: i18n(I18nKey.guestbook), url: "/guestbook/", icon: "material-symbols:chat", }, [LinkPreset.Bangumi]: { name: i18n(I18nKey.bangumi), url: "/bangumi/", icon: "material-symbols:movie", }, [LinkPreset.Gallery]: { name: i18n(I18nKey.gallery), url: "/gallery/", icon: "material-symbols:photo-library", }, // ✅ 添加 Welfare 映射 [LinkPreset.Welfare]: { name: "公益项目", // 或者使用 i18n: i18n(I18nKey.welfare) url: "/welfare/", icon: "material-symbols:favorite", },};3️⃣ 内容集合配置 (src/content/config.ts)
// 添加 welfare 集合const welfareCollection = defineCollection({ loader: glob({ pattern: "**/*.{md,mdx}", base: "./src/content/welfare" }), schema: z.object({ title: z.string(), description: z.string().optional(), published: z.date().optional(), tags: z.array(z.string()).optional(), }),});
export const collections = { posts: postsCollection, spec: specCollection, welfare: welfareCollection, // ← 必须注册};4️⃣ 内容文件 (src/content/welfare/xxx.md)
---title: "乡村教育支持"description: "为偏远山区儿童提供教育资源"published: 2025-06-01tags: ["公益", "教育"]---
# 乡村教育支持
这里是文章内容...5️⃣ 页面路由文件 (src/pages/welfare/xxx.astro)
---import { getEntry, render } from "astro:content";import Markdown from "@components/common/Markdown.astro";import MainGridLayout from "@/layouts/MainGridLayout.astro";
const post = await getEntry("welfare", "rural-education"); // 修改 slug
if (!post) { throw new Error("Page not found");}
const { Content } = await render(post);---
<MainGridLayout title={post.data.title} description={post.data.description}> <div class="flex w-full rounded-(--radius-large) overflow-hidden relative min-h-32"> <div class="card-base z-10 px-9 py-6 relative w-full"> <Markdown class="mt-2"> <Content /> </Markdown> </div> </div></MainGridLayout>关键点:
- getEntry(“集合名”, “slug”)
- 集合名必须与 src/content.config.ts 中注册的一致
- slug 对应 .md 文件名(不含扩展名)
🎯 核心要点
| 文件类型 | 位置 | 作用 |
| .astro 路由 | src/pages/ | 布局、获取内容、渲染页面 |
| .md 内容 | src/content/welfare/ | 实际的文章/页面内容 |
| content.config.ts | src/content/ | 注册内容集合,定义数据结构 |
| navBarConfig.ts | src/config/ | 配置导航栏菜单项 |
🔄 完整工作流程
- 1.在 navBarConfig.ts 中添加菜单项(URL 路径)
- 2.在 content/config.ts 中注册集合(如 welfare)
- 3.创建 .md 文件 在 src/content/集合名/ 下
- 4.创建 .astro 文件 在 src/pages/集合名/ 下
- 5.重启开发服务器 测试
- 6.部署 到生产环境
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
Firefly 主题在导航栏添加新菜单和页面的完整流程
https://fly.hangdn.com/posts/firefly-主题在导航栏添加新菜单和页面的完整流程/ 相关文章 智能推荐
1
Material Symbols官方图标库
技术分享 Firefly 主题在官方图标库,修改配置文件,增加MD文件路由
2
科学上网的最高境界将白嫖进行到底无需VPS无需域名
技术分享 通达信看盘,在线看盘工具汇总,连板天梯,打板
3
部署Twikoo到cloudflaer
技术分享 部署Twikoo,复制仓库,创建D1数据库,创建R2存储
4
科学上网永久免费Firefox 火狐浏览器免费VPN纯净IP无限流量
技术分享 通达信看盘,在线看盘工具汇总,连板天梯,打板
5
科学上网永久免费 VPN2026最强精选真正永久免费vpn
技术分享 通达信看盘,在线看盘工具汇总,连板天梯,打板
随机文章 随机推荐