Ethereal主题,发布了
故事的起点
接触 Halo 博客系统纯属偶然。几个月前,我打算搭建属于自己的小站,便开始寻找一款 UI 精致、功能强大的建站系统。从 WordPress 到 Typecho,我几乎试遍了主流的动态博客方案,但最终兜兜转转,还是回到了 Halo 的怀抱——部署足够简单,后台界面清爽,生态也算丰富。然而,挑主题的过程却没有想象中顺利。尽管 Halo 社区有不少作品,但翻来覆去,当时始终没有找到那个让我一眼心动的。
直到某天,我遇见了 Fuwari。这款基于 Astro 的静态博客主题,凭借卡片化布局、柔和的色彩过渡和极致流畅的响应式体验,精准地踩在了我的审美点上。更让我意外的是,它似乎格外受欢迎——浏览不少个人站点时,都能看到 Fuwari 的影子。
但问题就来了:Fuwari 是 Astro 生态下的静态主题,而 Halo 是动态博客系统。难道要为了一个主题,把整个博客平台推倒重来吗?
柳暗花明
带着不甘心,我开始在 Halo 的应用商店里反复翻找。经过我的寻找,发现了 Jevon 大佬移植的
安装试用的结果没有让我失望——Fuwari 的卡片美学、响应式细节、文章目录和深色模式,都在 Halo 上得到了近乎完美的还原。
灵感迸发
不过,用了一段时间后,我渐渐开始不满足了。halo-theme-fuwari 虽然还原很好,但它本质上是 Fuwari 的移植版,功能上并未做太多延伸。
于是,我顺着 Fuwari 的线索在搜索引擎里继续深挖,很快发现了 CuteLeaf 的 Firefly 项目。它同样基于 Fuwari 二次开发,但功能丰富度远超预期:双侧边栏、Banner 大标题&波浪动效、站点统计、日历、音乐播放器、天气……眼花缭乱的新功能让我大开眼界。
于是我一边眼红着 firefly 酷炫的功能,一边开始思考:能不能把这些优秀的设计思路,也搬到 Halo 上来?
fuwari NanNan 的诞生
说干就干,我 Fork 了 halo-theme-fuwari 的仓库,开启了这场漫长而又充满期待的改造之旅。
起初,我的二改非常保守——坦白说,我的代码水平一言难尽,主要靠 AI 辅助做一些小修小补。菜单栏磨砂模糊、Banner 底部波浪动效、菜单栏支持 Halo 二级菜单、适配自助提交友链……零零散散的小改动。并且一时没想好主题名字,就用我的昵称命名,于是
但小修小改终究满足不了我日益膨胀的想法。在参考 Firefly 的设计后,开始了大幅度魔改。
布局重构
halo-theme-fuwari 采用的是经典的两栏布局(侧边栏 + 主内容),布局相对固定。参考 Firefly 的双侧边栏设计,我引入了三栏布局:左侧边栏和右侧边栏可以自由组合小组件,中间是文章主内容。
现在的侧边栏已经变成了一个灵活的“组件容器”——个人简介、天气、音乐播放器、站点统计、标签云……用户可以在后台随意组合,还能一键切换两栏/三栏布局,自由度直接拉满。
小组件生态
这是我最花心思的部分。借鉴 Firefly 的小组件思路,我为 Ethereal 开发了一系列实用的侧边栏组件:
天气组件(基于腾讯位置服务,自动定位)
一言(随机名言短句)
站点统计(文章数、标签数、运行天数)
热门文章排行
目录组件(三栏样式)
杂七杂八
增加了 Firefly 同款的 Banner 大标题、友情链接的申请友链卡片
然后就是一些小功能:
速度优化
文章摘要框
外链跳转拦截模态框
登录认证界面的适配(虽然不好看)
页脚增强
右下角悬浮控件增强
……
等等
Ethereal 的诞生
经过多个版本的迭代和本地测试,功能逐渐稳定下来,视觉上也越来越接近自己想象中的样子。中间也发过几篇关于主题的文章:
到这里了,该给它取一个正式的名字了。
Ethereal,由此诞生:
Ethereal,空灵、干净。功能不算少,但尽量做到有条理、不杂乱。
于是,全新的仓库 Halo-Theme-Ethereal 替代了原先那个随意命名的版本。
并同步上架了 Halo 官方应用商店——那个最初只为“自己想用”而折腾的主题,就这么意外地走到了更多人面前:
如果你也想找一款 Halo 上 Fuwari 风格的主题,不妨安装试试,谢谢!(^з^)-☆
致谢
https://halo.run/ — 优秀的 Java 博客系统https://github.com/saicaca/fuwari — 原始 Astro 主题,MIT 许可https://github.com/jiewenhuang/halo-theme-fuwari — 原版 Halo 移植主题,MIT 许可https://github.com/CuteLeaf/Firefly — 清新美观的 Astro 静态博客主题模板https://github.com/halo-sigs — Halo 社区插件与工具链