Skip to content

导航栏

导航栏配置控制站点顶部导航菜单的链接和搜索功能。

配置文件

src/config/navBarConfig.ts

预设链接

Firefly 提供了一组内置的导航链接预设,可以直接使用:

预设说明
LinkPresets.Home主页
LinkPresets.Archive归档
LinkPresets.Categories分类
LinkPresets.Tags标签
LinkPresets.Friends友链
LinkPresets.Sponsor打赏
LinkPresets.Guestbook留言板
LinkPresets.About关于
LinkPresets.Bangumi番组计划
LinkPresets.Gallery相册

自定义链接

自定义链接支持以下属性:

属性类型必填说明
namestring链接名称
urlstring链接地址
iconstring图标(Iconify 格式)
externalboolean是否为外部链接
childrenarray子菜单项,支持嵌套
pageKeystring对应 siteConfig.pages 中的页面键名,用于动态显示/隐藏

配置示例

ts
import { type NavBarConfig, type NavBarLink } from "../types/navBarConfig";
import { LinkPresets } from "../config/navBarConfig";

const links: NavBarLink[] = [
  // 使用预设链接
  LinkPresets.Home,
  LinkPresets.Archive,

  // 自定义链接(含子菜单)
  {
    name: "链接",
    url: "/links/",
    icon: "material-symbols:link",
    children: [
      {
        name: "GitHub",
        url: "https://github.com/CuteLeaf/Firefly",
        external: true,
        icon: "fa7-brands:github",
      },
      {
        name: "Bilibili",
        url: "https://space.bilibili.com/38932988",
        external: true,
        icon: "fa7-brands:bilibili",
      },
    ],
  },

  // 更多预设链接
  LinkPresets.Friends,
];

菜单名称 i18n

导航栏菜单名称会根据站点语言(siteConfig.langPUBLIC_SITE_LANG 环境变量)自动翻译。规则是:如果 name 没有被修改(仍等于主题默认值),就用该语言的翻译;如果修改过,则原样显示自定义名称。

ts
LinkPresets.Home      // 默认 name 为「主页」,站点为 en 时显示 "Home",ja 时显示 "ホーム"
{
  name: "我的主页",   // 自定义名称,无论什么语言都原样显示
  url: "/",
}
  • 分组名称(文章 / 社交 / 我的 / 关于 / 链接)同样支持翻译
  • 品牌名(VNDBAnimeList 等)各语言一致,不做翻译,保持原名

TIP

修改预设链接的 name 即可固定自定义名称;想恢复自动翻译就把 name 改回默认值。

搜索配置

导航栏搜索功能通过 navBarSearchConfig 单独配置:

属性类型默认值说明
methodNavBarSearchMethodNavBarSearchMethod.PageFind搜索方式,目前支持 PageFind
ts
export const navBarSearchConfig: NavBarSearchConfig = {
  method: NavBarSearchMethod.PageFind,
};

动态导航栏

导航栏会根据 siteConfig.pages 中的页面开关配置自动调整显示内容。只需在链接上设置 pageKey 属性,导航栏组件会自动判断是否显示该链接。

工作原理

NavBarLink 上设置 pageKey 属性,其值对应 siteConfig.pages 中的键名:

ts
// siteConfig.ts
pages: {
  friends: true,    // 友链页面开启
  guestbook: false, // 留言板页面关闭
  bangumi: true,    // 番组计划开启
  gallery: false,   // 相册页面关闭
  dynamic: true,     // 动态页面开启
  sponsor: true,    // 打赏页面开启
}
ts
// navBarConfig.ts - 设置 pageKey
LinkPresets.Friends    // pageKey: "friends"
LinkPresets.Guestbook  // pageKey: "guestbook"
LinkPresets.Bangumi    // pageKey: "bangumi"

当页面关闭(设为 false)时:

  • 对应的导航栏链接会自动隐藏
  • 如果父菜单的所有子项都被隐藏,父菜单也会自动隐藏
  • 如果父菜单只剩一个子项,会直接显示该子项(去除父级包裹)

示例

配置效果
siteConfig.pages.guestbook = false留言板链接不显示
siteConfig.pages.sponsor = false打赏链接不显示
siteConfig.pages.bangumi = false番组计划链接不显示
siteConfig.pages.gallery = false相册链接不显示
siteConfig.pages.dynamic = false动态链接不显示
pages.gallery = falsepages.bangumi = false"我的"整个菜单不显示

TIP

已经预装的图标集:fa7-brandsfa7-regularfa7-solidmaterial-symbolssimple-icons。访问 icones.js.org 获取图标代码。如果需要其他图标集,可安装:pnpm add @iconify-json/<icon-set-name>