FIT2CLOUD
Cosolar 的图标

Cosolar

6,105
2,090

halo-theme-cosolar 是一款为 Halo 2.x 打造的现代博客主题,专为技术写作者设计。它把"内容"放回舞台中央 —— 干净的排版、克制的动效、合理的留白,让代码与文字都能舒适呼吸。同时在小屏与移动端做了完整自适应:贴底毛玻璃操作栏、抽屉式目录、自动隐藏的侧边栏,让手机阅读体验与桌面端同样顺滑。

1.1.9
Cosolar 发布于
>=2.26.0

halo-theme-cosolar v1.1.9

类型 内容
✨ 新功能 head 输出 Open Graph / Twitter Card 元标签,修复微信 / Telegram / QQ 分享链接无预览标题封面
✨ 新功能 阅读页左上角知识库 logo 优先使用知识库 spec.logo,未配置则显示内置书本图标
🐛 修复 页脚 legal_links 未配置时抛出 EL1001E(null 无法转布尔)导致整个页面渲染中断
🔧 调整 防御性加固 JS:规避正文标题、灯箱键盘/触摸、排序重应用等处的空指针运行时异常

1、Open Graph / Twitter Card 分享元标签(src/fragments/head.html)

分享文章链接到 Telegram、微信、QQ 等即时通讯时,预览卡片此前拿不到文章标题与封面(仅有 <title>,外部解析不稳定)。现于 head 公共片段输出完整分享元标签:

  • 输出 og:site_name / og:type / og:title / og:description / og:url / og:image 与 twitter:card(summary_large_image)。
  • 通过 ?. / ?: 链式回退:文章页取文章标题、摘要、封面,独立页面取其对应字段,其它页面回退到站点标题、副标题、logo,全站通用。
  • og:url 由 site.url + permalink 拼成绝对地址。

2、阅读页知识库 logo 来源调整(src/doc.html)

阅读页左上角知识库 logo 的来源优先级调整:

  • 优先读取知识库自身的 spec.logo 字段;配置了即显示该图片(32×32、object-fit:contain 自适应)。
  • 未配置 spec.logo 时显示内置书本 SVG 图标,不再回退到网站 logo(basic.logo_image)。

3、页脚配置缺失导致的渲染中断修复(src/fragments/footer.html)

后台「页脚设置」的 legal_links 分组未配置时,legalLinks?.privacy_enabled ? … : … 这类「可选链结果直接作三元条件」的写法会因 null 无法转 Boolean 抛出 EL1001E,使整个页面渲染中断(响应头已发出后连接被提前关闭)。

修复:四个条件的布尔位统一改用 ?: false 兜底后再取 URL,未配置时安全输出空值,页面完整渲染。后续新增 Thymeleaf 表达式请遵循「先判空 / 先 ?: 兜底」的写法。

4、前端脚本防御性加固(src/js/post.ts · photos.ts · index.ts)

为运行时的边界情况补充兜底,交互表现不变:

  • post.ts:正文标题为空元素时,锚点 id 生成由取别名 ! 改为 ?? "",避免 null.replace 运行时报错。
  • photos.ts:灯箱键盘 / 触摸回调在元素被移除时安全退出;确认弹窗 cleanup 先判空再取引用。
  • index.ts:排序重应用对内容区 / 列表容器改用可选链与空值兜底。

资源下载

  • halo-theme-cosolar-1.1.9.zip