feat: 页面模板差异化改进 + 配置优化 + 兼容清理 (#29)

- 首页判定:navigation 第一项
- 模板:page/projects/articles/bookmarks/search-results
- bookmarks:update: YYYY-MM-DD | from: git|mtime
- articles:RSS 聚合只读条目 + 分类聚合 + 影子写回结构
- projects:repo 卡片 + 可选热力图 + 自动抓取元信息
- 工作流:构建前 sync + schedule 定时刷新
- 移除兼容:config.yml/config.yaml、navigation.yml、home 特例
- 迁移说明:config/update-instructions.md
This commit is contained in:
rbetree
2025-12-28 00:22:54 +08:00
committed by GitHub
parent 1475a8a0d3
commit 387cd2492e
35 changed files with 2927 additions and 851 deletions

View File

@@ -30,15 +30,14 @@ config/
├── _default/ # 默认配置目录
│ ├── site.yml # 默认网站基础配置(含导航配置)
│ └── pages/ # 默认页面配置
│ ├── home.yml # 首页默认配置
│ ├── projects.yml
│ ├── articles.yml
── friends.yml
│ └── bookmarks.yml
│ ├── common.yml # 示例默认首页navigation 第一项)
│ ├── projects.yml # 项目页
│ ├── articles.yml # 文章页
── bookmarks.yml # 书签页
└── user/ # 用户配置目录(覆盖默认配置)
├── site.yml # 用户自定义网站配置(含导航配置)
└── pages/ # 用户自定义页面配置
├── home.yml # 首页用户配置
├── common.yml # 示例:与 navigation 第一项对应
└── ...
```
@@ -74,18 +73,17 @@ MeNav 配置系统采用“完全替换”策略(不合并),按以下优
- 个人资料和社交媒体链接
- 导航菜单配置(侧边栏导航项、页面标题和图标、页面顺序和可见性)
> **注意**从 v1.x 版本开始,导航配置已合并到 `site.yml` 文件中,不再使用独立的 `navigation.yml` 文件。如果您从旧版本迁移,请将原 `navigation.yml` 的内容移至 `site.yml` 的 `navigation` 字段
> **注意**导航配置仅支持写在 `site.yml` 的 `navigation` 字段
### 页面配置
`pages/` 目录下的配置文件定义各个页面的内容:
- `home.yml`: 首页分类和站点列表
- `common.yml`: 示例首页(本质上是普通页面;首页由 navigation 第一项决定,不要求必须叫 home
- `projects.yml`: 项目展示配置
- `articles.yml`: 文章列表配置
- `friends.yml`: 友情链接配置
- `bookmarks.yml`: 书签页面配置
- 自定义页面配置
- 其他自定义页面配置(可按需新增/删除;与 `site.yml -> navigation[].id` 对应)
## 配置详解
@@ -120,23 +118,63 @@ MeNav 配置系统采用“完全替换”策略(不合并),按以下优
- `profile.title` / `profile.subtitle`:分别对应首页顶部主标题与副标题
5. **导航**
- `navigation[]`:页面入口列表,`id` 需唯一,并与 `pages/` 中配置文件名对应(例如 `id: home` 对应 `pages/home.yml`
- `navigation[]`:页面入口列表,`id` 需唯一,并与 `pages/<id>.yml` 对应(例如 `id: common` 对应 `pages/common.yml`
- 默认首页由 `navigation` 数组顺序决定:**第一项即为首页(默认打开页)**,不再使用 `active` 字段
- 图标使用 Font Awesome 类名字符串(例如 `fas fa-home``fab fa-github`
- 导航显示顺序与数组顺序一致,可通过调整数组顺序改变导航顺序
6. **RSSarticles Phase 2**
- `rss.*`:仅用于 `npm run sync-articles`(联网抓取 RSS/Atom 并写入缓存)
- `npm run build` 默认不联网;无缓存时 `articles` 页面会回退到 Phase 1 的站点入口展示
- articles 页面会按 `articles.yml` 的分类进行聚合展示:某分类下配置的来源站点,其文章会显示在该分类下
- 抓取条数默认:每个来源站点抓取最新 8 篇(可通过 `site.yml -> rss.articles.perSite``RSS_ARTICLES_PER_SITE` 调整)
- 默认配置已将 `rss.cacheDir` 设为 `dev`(仓库默认 gitignore避免误提交缓存文件可按需改为自定义目录
- GitHub Pages 部署工作流会在构建前自动执行 `npm run sync-articles`,并支持定时触发(默认每天 UTC 02:00可在 `.github/workflows/deploy.yml` 调整)
7. **GitHubprojects 热力图,可选)**
- `github.username`:你的 GitHub 用户名(用于 projects 页面标题栏右侧贡献热力图)
- `github.heatmapColor`:热力图主题色(不带 `#`,例如 `339af0`
- `github.cacheDir`projects 仓库元信息缓存目录(默认 `dev`,仓库默认 gitignore
- projects 仓库统计信息language/stars/forks`npm run sync-projects` 自动抓取并写入缓存;`npm run build` 默认不联网
- GitHub Pages 部署工作流会在构建前自动执行 `npm run sync-projects`,并支持定时触发(默认每天 UTC 02:00可在 `.github/workflows/deploy.yml` 调整)
### pages/ 页面配置
页面配置位于 `pages/*.yml`,每个文件对应一个页面内容,文件名与导航 `id` 对应:
- `pages/home.yml`:首页(通常是 `categories -> sites`
- `pages/projects.yml` / `articles.yml` / `friends.yml`:示例页面(可按需删改)
- `pages/common.yml`示例首页(通常是 `categories -> sites`
- `pages/projects.yml` / `articles.yml`:示例页面(可按需删改)
- `pages/bookmarks.yml`:书签页(通常由导入脚本生成,也可以手动维护)
> 提示:自定义页面时,先在 `site.yml` 的 `navigation` 中增加一个 `id`,再创建同名的 `pages/<id>.yml`。
>
> 支持“可删除”:如果 `navigation` 中存在某个页面 `id`,但 `pages/<id>.yml` 不存在,构建仍会生成该页面(标题回退为导航名称、分类为空、模板默认使用通用 `page`)。
>
> 站点描述建议简洁(例如不超过 30 个字符),以保证卡片展示更美观。
#### 通用 page 页面配置(推荐,用于 friends 等普通页面)
对不需要特殊渲染的页面(例如“友链/朋友”页),建议使用通用 `page` 模板,并保持 `categories -> sites`(可选更深层级):
```yaml
title: 示例页面
subtitle: 示例副标题
template: page
categories:
- name: 示例分类
icon: fas fa-folder
sites:
- name: 示例站点
url: https://example.com
icon: fas fa-link
description: 示例描述
```
兼容说明:
- 若历史配置仍使用顶层 `sites`(旧结构),系统会自动映射为一个分类容器以保持页面结构一致(当前仅对 friends/articles 提供该兼容)。
### 多层级嵌套配置2-4层
书签与分类支持 2~4 层嵌套,用于更好组织大量站点。建议直接参考默认示例:
@@ -184,7 +222,6 @@ MeNav 配置系统采用“完全替换”策略:只会选择一套目录加
- `site.yml`:站点全局配置(包含 `navigation` 等)
- `pages/*.yml`:各页面配置(文件名需与 `navigation.id` 对应)
- `navigation.yml`:仅在 `site.yml` 未提供 `navigation` 时回退使用(兼容旧版本;推荐迁移到 `site.yml`
## 配置示例
@@ -227,21 +264,24 @@ social:
# 导航配置
navigation:
- name: "首页"
icon: "fas fa-home"
id: "home"
- name: "常用"
icon: "fas fa-star"
id: "common"
- name: "项目"
icon: "fas fa-project-diagram"
id: "projects"
- name: "文章"
icon: "fas fa-book"
id: "articles"
- name: "书签"
icon: "fas fa-bookmark"
id: "bookmarks"
```
### 首页配置示例 (home.yml)
### 通用页面配置示例(例如 common.yml
```yaml
# 页分类配置
# 页分类配置
categories:
- name: "常用工具"
icon: "fas fa-tools"