Skip to content

feat:首页公告卡片区与创建公告表单 - #42

Open
Old-cpu wants to merge 1 commit into
masterfrom
new_page
Open

Old-cpu wants to merge 1 commit into
masterfrom
new_page

Conversation

@Old-cpu

@Old-cpu Old-cpu commented Sep 30, 2026

Copy link
Copy Markdown
Collaborator

动机

社团公告目前只能在公告页以纯链接列表展示,首页访客完全看不到社团动态;同时公告条目靠手写 Markdown,新成员容易写错格式。本 PR 一次性解决这两件事。

改动内容

  1. 首页公告卡片区
  • 首页 features 下方新增公告卡片区:覆写 theme/index.tsx 的 HomeLayout,通过官方 afterFeatures 插槽挂载,仅中文站启用
  • 展示最新 6 条公告:日期 + 来源徽章(微信推文 / Gitee)+ 标题(两行截断)
  • 点击卡片新标签页跳转原文
  • 滚动进入视口时卡片依次浮入(70ms 交错动画),prefers-reduced-motion 下自动关闭
  • 样式全部使用 Rspress 主题变量(--rp-c-*),浅色/深色主题自动适配
image
  1. 「创建公告」表单页 /announcement/create
  • 首页公告区新增「+ 创建公告」入口按钮
  • 表单字段:原文链接(带格式校验)、卡片标题、发布日期(默认今天、可修改)
  • 粘贴链接后自动识别来源(微信 / Gitee)
  • 右侧实时预览卡片效果与生成的 Markdown 片段
  • 一键复制片段 + 直达公告文件的 GitHub 编辑页,粘贴到文件末尾提交 PR 即可
image
  1. 数据自动同步管线
  • 新增 scripts/gen-announcements.mjs:从 docs/zh/announcement/index.md 自动提取公告数据(标题 / 日期 / 链接 / 来源)生成 docs/components/announcements.json
  • 挂到 predev / prebuild 钩子:维护者只需维护公告页一个文件,首页卡片自动同步,无需手工改两处

数据流

announcement/index.md ──(prebuild 脚本)──▶ announcements.json ──▶ 首页公告卡片
        ▲                                                                  │
        └────────── 创建公告表单(生成 Markdown 片段 → 复制 → PR 回流)──────────┘

说明

  • 无链接的历史里程碑条目(如成立时间)不会生成卡片,仍只在公告页展示
  • 卡片区仅中文站挂载(公告数据为中文),英文站如需要可后续补充

- 新增 scripts/gen-announcements.mjs:从公告页 md 自动提取数据生成 JSON,predev/prebuild 钩子自动同步
- 新增 AnnouncementCards 组件:首页展示最新 6 条公告卡片,滚动交错浮入动画,点击跳转原文
- theme/index.tsx 覆写 HomeLayout,经 afterFeatures 插槽挂载(仅中文站)
- 新增 /announcement/create 表单页:填写链接+标题实时预览卡片,生成 Markdown 片段,一键复制并跳转 GitHub 编辑页提交 PR
- 首页公告区新增「创建公告」入口按钮
- 全部样式使用 Rspress 主题变量,深浅色自适应,prefers-reduced-motion 下关闭动画
@Old-cpu
Old-cpu requested a review from CapableCCat September 30, 2026 14:59

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant