8e6dccbd09aed2e3d35f640a23d6689ffa81a9a9
- 修复 /categories、/tags 因变量为 List 误用 .items 导致的 500 - 新增 layout.html 布局契约,消除插件页面 fallback 警告 - 适配 plugin-moments / plugin-photos / plugin-links(含友链申请表单与 RSS 订阅页) - 适配 halo-weread-plugin(书架页)、留言板单页模板 - 适配 plugin-extra-api 的代码高亮与暗色样式 - 修复暗黑模式评论区不可见(补充 color-scheme 与兜底样式) - 更新元数据:作者暖心向阳335、版本 0.1.0、requires >=2.26.0
Whitespace 留白
一个移植自 Typecho 主题 whitespace 留白 的 Halo 主题,主打极简留白风格与清晰的排版。
主题名
whitespace,显示名 Whitespace 留白,版本0.1.0,作者 暖心向阳335。 要求 Halo ≥ 2.26.0。源码在src/,构建产物在templates/。 源码仓库:https://git.nxxy335.top/nxxy335/halo-theme-whitespace
特性
- 极简留白风格,自带浅色 / 深色双主题(跟随系统或手动切换,记忆访客选择)
- 首页可选展示最新一篇置顶文章(
featured设置) - 文章 / 页面 / 归档 / 分类 / 标签 / 作者 / 关于 等完整页面
- 文章页结构化数据(Schema.org
BlogPostingJSON-LD)与社交分享标签(canonical / Open Graph / Twitter Card),均可在主题设置中关闭 - 内置搜索按钮(依赖官方
PluginSearchWidget插件,未安装则不显示) - 阅读进度条、代码块复制、相对时间、回到顶部、移动端菜单等交互
- 多语言:
i18n/default.properties(回退)+i18n/zh_CN.properties - 提供
layout.html布局契约,供使用布局契约的插件页面复用主题导航 / 页脚 / 暗色样式
插件适配
主题已为以下插件提供适配页面(在 src/ 下以同名模板提供,构建后进入 templates/):
- plugin-moments:
/moments瞬间页 - plugin-photos:
/photos图库页 - plugin-links:
/links友链页;并额外提供links-apply.html:访客友链申请表单(调用插件公共 REST API,含图形验证码)links-subscribe.html:RSS 订阅动态聚合页(使用linkFeedFinder)
- halo-weread-plugin:
weread.html微信读书书架页(前端拉取插件/shelf-html并注入) - 留言板:
page_guestbook.html以评论区作为留言板的单页模板 - plugin-extra-api:API 扩展包(无独立页面),主题已适配其 shiki 代码高亮与暗色样式
weread/留言板/友链申请/链接订阅均为「自定义页面模板」,在控制台新建单页并选择对应模板即可启用。
目录结构
src/ 源码目录(在此编辑)
├── partials/
│ ├── layout.html 公共布局(导航 / 页脚 / 主题切换 / 脚本入口)
│ └── seo.html SEO 片段(canonical / OG / Twitter,受开关控制)
├── modules/
│ ├── post-card.html 文章列表卡片
│ ├── post-meta.html 文章元信息(时间 / 分类 / 浏览量)
│ └── pagination.html 分页导航
├── error/ 错误页(404 / 通用错误)
│ ├── 404.html
│ └── error.html
├── css/main.css 全部样式(含双主题变量、响应式、打印)
├── js/main.ts 全站脚本
├── js/post.ts 文章页脚本(代码复制 / 阅读进度)
├── index.html post.html page.html page_about.html
├── archives.html category.html tag.html categories.html tags.html author.html
└── i18n/ 多语言消息
theme.yaml 主题元数据(必填)
settings.yaml 控制台主题设置表单
templates/ 构建产物(Halo 实际读取,勿手动编辑)
src/与templates/的关系:src/经 Vite 构建生成templates/。开发或发版前务必执行构建,使templates/与源码一致。不要手动修改templates/。
开发与构建
pnpm install # 安装依赖
pnpm dev # 监听模式构建(开发时用)
pnpm build-only # 仅构建(tsc + vp build),生成 templates/
pnpm build # 构建并打包为可上传的 ZIP(theme-package-cli)
pnpm check # 格式化 + Lint 修复
构建输出:
- 页面与片段 →
templates/*.html、templates/modules/*.html、templates/error/*.html - 静态资源 →
templates/assets/*(文件名带内容哈希,运行时以/themes/whitespace/assets/...提供)
主题设置
在 Halo 控制台「主题 → 设置」中可配置:
| 分组 | 字段 | 说明 |
|---|---|---|
| basic | color_scheme | 默认配色:跟随系统 / 浅色 / 深色 |
| basic | footer_copyright | 页脚自定义版权(支持 HTML,留空不显示) |
| featured | enable | 首页是否展示置顶文章 |
| about | avatar / bio / github_url / twitter_url / contact_email | 关于页(自定义模板 page_about.html)内容 |
| seo | enable_metadata | 输出 canonical / Open Graph / Twitter Card |
| seo | enable_structured_data | 输出文章页 BlogPosting JSON-LD |
约定与说明
- Logo / favicon / SEO description·keywords / 代码注入优先使用 Halo 系统设置;主题仅输出 canonical、OG、Twitter 与结构化数据(可在
seo分组关闭,避免与插件重复)。 - 社交分享 / 结构化数据中用
status.permalink与site.routes.*拼出地址,不写死可配置路由。 - 搜索由官方
PluginSearchWidget插件提供,按钮仅在插件可用时出现。 - 浏览量来自 Halo 原生统计(
post.stats.visit),无需主题自行计数。
致谢
- 原主题:whitespace 留白 by kehua
- 基于 Halo 官方 theme-vite-starter 脚手架移植
Languages
HTML
70.9%
CSS
21.1%
TypeScript
8%