本项目是基于 Jekyll + Just the Docs 的静态站点,用于维护 Spoon CoLearning 课程主页、讲者列表与各期系列日程页面。
线上地址:https://xspoonai.github.io/spoon-colearning/
- 静态站点生成器:
jekyll(Gemfile当前为~> 4.4.1) - 主题:
just-the-docs(Gemfile固定0.10.1) - 部署方式:GitHub Pages(
main分支推送后自动构建与发布) - 基础路径:
_config.yml中baseurl: "/spoon-colearning"
本地预览(建议):
bundle install
bundle exec jekyll serve本地访问:
http://127.0.0.1:4000/spoon-colearning/
_config.yml:站点总配置(标题、主题、baseurl、集合 collections、默认布局等)index.md:首页(Home)guests.md:Lecture Guests 页面(自动读取_staffers集合)series1.md/series2.md/series3.md:三期页面(讲者区 + Schedule 表格)_staffers/*.md:讲者数据源(Front Matter)assets/images/:讲者头像等静态图片_sass/custom/custom.scss:全局自定义样式(影响 guests 等页面).github/workflows/pages.yml/deploy.yml:自动构建与部署工作流
- 侧边导航来源于各页面 Front Matter:
title决定显示名称nav_order决定顺序(index=1,guests=2,series1=3,series2=4,series3=5)
guests.md使用 Liquid 遍历:{% assign all_guests = site.staffers | sort: "index" %}- 因此讲者展示顺序由
_staffers/*.md中index控制
series*.md当前是“手写内容页”:- 讲者卡片、表格、链接直接写在页面中
- 与
_staffers没有自动绑定关系(两边都可能需要同步修改)
每位讲者一个文件,例如:_staffers/michael-mahoney.md
建议字段:
---
name: Michael Mahoney
role: Professor in University of California Berkeley, Amazon Scholar
index: 1
picture: assets/images/michael-mahoney.jpg
email: mmahoney@stat.berkeley.edu
external_url: https://www.stat.berkeley.edu/~mmahoney/
featured: true
layout: default
---说明:
index:数字越小排序越靠前picture:建议使用assets/images/xxx.jpg(与guests.md渲染方式一致)email:可留空,但前端会渲染<em></em>,如需更优显示可后续优化模板layout:当前项目默认是default,可显式保留
- 将头像放到
assets/images/ - 新建
_staffers/<slug>.md,按上述字段填写 - 设置合理
index(避免与已有讲者冲突) - 本地预览确认
Lecture Guests页面显示正常
修改目标文件:series1.md、series2.md 或 series3.md
- 在
## Schedule的<table>内增删<tr> - 讲座信息在第 2 列(标题/讲者/要点/Slides/Recording)
- 补充阅读在第 3 列(可用
<em>To be updated</em>占位) - 链接统一加
target="_blank"
- 新建
series4.md - Front Matter 设定:
title: Series Ⅳnav_order: 6(按现有顺序递增)
- 复制现有
series*.md的结构后改内容 - 确认侧边栏顺序、移动端展示与链接可用性
- 全局样式优先放
_sass/custom/custom.scss - 当前
series1/2/3.md内含页面级<style>,会覆盖部分全局规则 - 若要统一三期样式,建议将重复 CSS 抽到
_sass/custom/custom.scss,并从页面内删除重复块
当前仓库存在两个 workflow:
.github/workflows/pages.yml.github/workflows/deploy.yml
两者都在 push main 时执行“构建 + 部署”,功能存在重叠。
维护建议:
- 保留一个主工作流,另一个停用,避免重复部署与排障复杂度上升
- 构建命令以
bundle exec jekyll build为准 - 确保仓库 Settings 中 Pages 来源与 Actions 配置一致
-
baseurl问题最常见
项目部署在子路径/spoon-colearning,站内静态资源和内部链接应尽量使用:{{ '/assets/xxx' | relative_url }}
-
guests.md与series*.md数据不是同一来源_staffers只驱动Lecture GuestsSeries页面是手工维护,新增讲者时可能需要改两处
-
图片命名与路径要稳定
- 推荐小写英文与连字符,如
haipeng-chen.jpg - 文件名修改后要同步更新引用,避免线上 404
- 推荐小写英文与连字符,如
-
index/nav_order冲突会导致排序异常_staffers内index保持唯一- 顶层页面
nav_order保持唯一且连续
-
中英文符号统一
页面同时有英文内容与中文注释,维护时注意全角/半角、特殊字符(如Ⅰ Ⅱ Ⅲ)一致性。
bundle exec jekyll build能通过- 首页、Guests、Series I/II/III 页面可访问
- 新增/修改图片加载正常
- Slides/Recording/Reading 外链可打开
- 移动端下表格可横向滚动(不截断)
- Push 到
main后 GitHub Actions 通过,Pages 页面更新成功
- 将
series1/2/3.md重复的讲者卡片样式抽离为全局 SCSS - 将 Series 页面讲者信息改为复用
_staffers数据,降低重复维护成本 - 增加一个数据层(例如
_data/series.yml)统一驱动 schedule 表格 - 增加链接校验(CI)防止外链失效