FIT2CLOUD
MacWk Halo 的图标

MacWk Halo

1,105
156

面向软件目录和下载场景的 Halo 主题。

MacWk Halo Theme Logo

MacWk Halo Theme

面向软件目录、专题与内容站点的 Halo 2.x 主题

CI Halo >= 2.25.0 Astro 6.1 Node.js >= 22.12 GPL-3.0

在线演示 · 下载主题 · 问题反馈

界面预览 · 核心能力 · 安装 · 配置 · 开发 · 文档

项目定位

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

主题既能展示 Halo 原生文章,也能消费 plugin-software 提供的软件数据、专题和公共路由。

[!IMPORTANT]
plugin-software 是独立的软件管理插件,不是为本主题定制的后端。插件拥有领域数据和公共契约,本主题只是其中一个展示层消费者。

界面预览

MacWk Halo Theme 首页桌面端预览

首页预览会跟随 GitHub 的明暗模式切换;实际内容、品牌与强调色均可在 Halo 中配置。

查看更多页面:软件列表与软件详情
软件列表 软件详情
软件列表桌面端预览 软件详情桌面端预览

更多桌面端、移动端及明暗模式截图见 视觉回归基线

核心能力

能力 说明
Halo 原生内容 首页、文章、分类、标签、归档、独立页面和 404/500 页面
软件目录 软件列表、分类/标签筛选、排序分页、详情、版本、下载与评论
软件专题 专题列表、专题详情、装机必备、精品推荐和推荐入口
多套外观 自动、明亮、复古、护眼、海天、深邃和暗黑,可自定义强调色
渐进增强 核心内容由 SSR 输出;无 JavaScript 时仍保留主要链接与正文
页面导航 Swup 仅替换主内容区域,并避让登录、Console、API 和下载链接
SEO 与可用性 Canonical、结构化数据、动态页面 noindex、键盘交互和 reduced motion
工程化门禁 Biome、Astro Check、Vitest、资源预算、ZIP 校验、Playwright 和视觉回归

主题与插件的职责边界

plugin-software 本主题
软件、版本、下载源、分类、标签、专题 卡片、列表、侧栏和详情页布局
发布状态、搜索、过滤、排序和分页 网格/列表显示模式及浏览器本地偏好
Finder、公共 REST API 和主题路由 调用公共契约并渲染模板
下载登录/验证门禁与敏感字段隔离 下载面板、错误提示和交互反馈
软件评论资源与 Console 权限 评论组件的展示与挂载

getHome() / SoftwareHomeVo 保留为主题中立的首页聚合接口,用于一次取得最新、热门、推荐、评论、专题和分类数据。view=list|grid 等布局状态只属于主题,不进入插件查询参数或 Router 模型。

完整契约见 软件插件契约

安装与启用

环境要求

组件 要求
Halo >= 2.25.0
plugin-software 软件页面需要;普通 Halo 内容页可不安装
Node.js / pnpm 仅源码开发需要:Node.js >= 22.12.0、pnpm 10.34.5

安装主题

  1. GitHub Releases 下载 frontend-macwk-halo-theme-<version>.zip
  2. 在 Halo Console 的“外观 → 主题”中上传安装包。
  3. 启用主题并执行“重载主题配置”。
  4. 如需软件目录,安装并启用 plugin-software
  5. 按需创建下方列出的独立页面并选择对应自定义模板。

如启用了受验证码保护的下载源,请在 plugin-software 设置中完整配置 Cloudflare Turnstile。主题只在用户选择此类下载源时加载验证组件;配置缺失或验证服务不可用时会保持关闭授权,不会绕过插件门禁。

独立页面

建议 slug 自定义模板
about 关于页面
privacy 隐私政策
feedback 留言反馈
reward 打赏支持
genuine 正版推荐
must 装机必备
perfect 精彩软件推荐
recommend 推荐应用
special 软件专题

开发环境可使用幂等脚本初始化这些页面:

HALO_ORIGIN=http://127.0.0.1:8099 \
HALO_USERNAME="$HALO_USERNAME" \
HALO_PASSWORD="$HALO_PASSWORD" \
pnpm setup:pages

页面与数据来源

地址 数据提供方 用途
/ Halo Finder + softwareFinder Hero、软件、专题和文章栏目
/archives、文章、分类、标签 Halo 原生内容列表与详情
/soft/{category}/p{page} plugin-software 软件列表、分类、搜索、排序和分页
/soft/tag/{slug}/p{page} plugin-software 标签筛选的软件列表
/soft/{slug} plugin-software 软件详情、版本、下载和评论
/special/{slug} plugin-software 软件专题详情
/special/must/perfect/recommend Halo Page + softwareFinder 主题自定义软件页面
/about/privacy/feedback/reward/genuine Halo Page 站点说明和运营页面

插件未安装或未启用时,主题会隐藏软件导航和 Finder 入口;主题拥有的自定义 Page 会显示降级提示,普通 Halo 内容页不受影响。插件拥有的 /soft/.../special/{slug} 路由在此状态下不存在。

主题配置

所有可变内容集中在 settings.yaml

分组 可配置内容
外观 默认配色、强调色、浏览器主题色和动画开关
品牌 Halo 站点 Logo、自定义 Logo 和站点标题
导航 主导航、顶部快捷菜单、页脚菜单和搜索提示
首页 轮播、专题、软件与文章模块及显示数量
文章 特色文章、安装必读和无封面占位图
软件 下载文字、评论、官网入口、版本数量和装机专题
运营页面 联系方式、打赏、正版推荐、维护说明和横幅
页脚与 SEO ICP、版权、Halo 扩展位和标题后缀

修改 theme.yamlsettings.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 dev

pnpm dev 监听源码并重建 templates/,页面仍由 Halo 提供。开发环境建议关闭 Thymeleaf 缓存:

spring:
  thymeleaf:
    cache: false

常用命令

命令 作用
pnpm check Biome、Astro、配置和 Vitest 检查
pnpm build 完整检查、模板构建、预算、打包和 ZIP 校验
pnpm build:templates 仅重建 Halo 模板
pnpm test:e2e 桌面/移动交互和 Swup 生命周期
pnpm test:visual 桌面/移动 × 浅色/深色视觉回归
pnpm check:performance 校验 gzip 静态资源预算
pnpm package 生成发布白名单主题安装包

浏览器测试需要一个已启用当前主题和软件插件的 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。

致谢

许可证

GPL-3.0 © jiewenhuang


讨论(0)

这是一个开源应用,我们推荐优先在开源仓库中提交 issue,以便开发者更好地接收和跟进问题。

去提交 issue