frontend-macwk-halo-theme
MacWk Halo Theme 是一个以 Halo 原生服务端渲染为基础的软件内容主题。Astro 将组件化源码构建为 Thymeleaf 模板,Halo 在请求时注入真实数据,Vue Island 只负责下载与评论等必要交互。

MacWk Halo Theme
面向软件目录、专题与内容站点的 Halo 2.x 主题
界面预览 · 核心能力 · 安装 · 配置 · 开发 · 文档
项目定位
MacWk Halo Theme 是一个以 Halo 原生服务端渲染为基础的软件内容主题。Astro 将组件化源码构建为 Thymeleaf 模板,Halo 在请求时注入真实数据,Vue Island 只负责下载与评论等必要交互。
主题既能展示 Halo 原生文章,也能消费 plugin-software 提供的软件数据、专题和公共路由。
Important
plugin-software 是独立的软件管理插件,不是为本主题定制的后端。插件拥有领域数据和公共契约,本主题只是其中一个展示层消费者。
界面预览

首页预览会跟随 GitHub 的明暗模式切换;实际内容、品牌与强调色均可在 Halo 中配置。
查看更多页面:软件列表与软件详情
更多桌面端、移动端及明暗模式截图见 视觉回归基线。
核心能力
主题与插件的职责边界
getHome() / SoftwareHomeVo 保留为主题中立的首页聚合接口,用于一次取得最新、热门、推荐、评论、专题和分类数据。view=list|grid 等布局状态只属于主题,不进入插件查询参数或 Router 模型。
完整契约见 软件插件契约。
安装与启用
环境要求
安装主题
从 GitHub Releases 下载
frontend-macwk-halo-theme-<version>.zip。在 Halo Console 的“外观 → 主题”中上传安装包。
启用主题并执行“重载主题配置”。
如需软件目录,安装并启用
plugin-software。按需创建下方列出的独立页面并选择对应自定义模板。
如启用了受验证码保护的下载源,请在 plugin-software 设置中完整配置 Cloudflare Turnstile。主题只在用户选择此类下载源时加载验证组件;配置缺失或验证服务不可用时会保持关闭授权,不会绕过插件门禁。
独立页面
开发环境可使用幂等脚本初始化这些页面:
HALO_ORIGIN=http://127.0.0.1:8099 \
HALO_USERNAME="$HALO_USERNAME" \
HALO_PASSWORD="$HALO_PASSWORD" \
pnpm setup:pages页面与数据来源
插件未安装或未启用时,主题会隐藏软件导航和 Finder 入口;主题拥有的自定义 Page 会显示降级提示,普通 Halo 内容页不受影响。插件拥有的 /soft/... 和 /special/{slug} 路由在此状态下不存在。
主题配置
所有可变内容集中在 settings.yaml:
修改 theme.yaml 或 settings.yaml 后,需要在 Halo Console 中重新加载主题配置。
技术架构
Astro / TypeScript 源码
↓ 构建
Thymeleaf 模板 + 哈希静态资源
↓ Halo 请求时渲染
完整 HTML + 必要的 Vue Island
src/pages/*.astro与最终 Halo 模板名一一对应。Astro props 和 slot 只存在于构建期;Halo 运行时数据必须保留为
th:*表达式。public/assets/会复制到templates/assets/。templates/和dist/都是生成目录,禁止手工编辑。评论与下载使用
client:load;评论数据仍在用户首次打开面板时按需获取。
项目结构
frontend-macwk-halo-theme/
├── .github/workflows/ # CI 与发布
├── audits/ # 审查记录与性能报告
├── docs/ # 架构、契约、开发和发布文档
├── public/assets/ # 原样发布的静态资源
├── scripts/ # 配置、资源、预算和安装包校验
├── src/
│ ├── pages/ # Halo 模板入口
│ ├── layouts/ # 页面骨架
│ ├── components/ # SEO 与共享组件
│ ├── features/ # shell、home、article、software
│ ├── integrations/ # Halo 与软件插件适配层
│ ├── scripts/runtime/ # 浏览器运行时与生命周期
│ ├── lib/ # 通用工具
│ └── styles/ # Token、主题与功能样式
├── tests/ # unit、contract、e2e、visual
├── templates/ # Astro 生成,Git 忽略
├── dist/ # 主题 ZIP,Git 忽略
├── theme.yaml
├── settings.yaml
└── package.json
完整的目录边界和参考项目对照见 架构说明 与 优化计划。
开发与构建
corepack enable
pnpm install --frozen-lockfile
pnpm devpnpm dev 监听源码并重建 templates/,页面仍由 Halo 提供。开发环境建议关闭 Thymeleaf 缓存:
spring:
thymeleaf:
cache: false常用命令
浏览器测试需要一个已启用当前主题和软件插件的 Halo:
HALO_ORIGIN=http://127.0.0.1:8099 pnpm test:e2e
HALO_ORIGIN=http://127.0.0.1:8099 pnpm test:visual验证插件禁用降级时,额外设置 HALO_PLUGIN_DISABLED_ORIGIN;未提供时对应测试会明确跳过。
安装包输出位置:
dist/frontend-macwk-halo-theme-<version>.zip
相关文档
架构与目录边界
软件插件契约
开发指南
发布指南
对抗性审查与优化计划
CI 与发布
ci.yaml对 push 和 Pull Request 执行完整静态构建与主题打包。cd.yaml在 GitHub Release 发布时使用 Halo 官方工作流重新构建安装包。真实 Halo 的交互和视觉回归测试按需在本地运行,不依赖长期维护的自托管 Runner。
Halo 应用市场发布暂未启用,配置 app-id 与
HALO_PAT后可开启。
许可证
GPL-3.0 © jiewenhuang
项目时间
- 开始
- 2026-07-23
技术栈
- Astro
- TypeScript
- CSS
- Vue
- JavaScript

