v1.0.18
这一版把站点左上角的标识做成了可替换的:可以直接上传图片(含 SVG)当标识,也可以填图片地址或粘贴内联 SVG 代码,还能选择「只显示标识、不显示站名」。
新增
-
左上角标识支持三种来源
「首屏 → 左上角标识」现在按优先级依次取用:
优先级 设置项 用法 1 内联 SVG 代码 把 <svg>…</svg>源码直接粘进来,不用上传;可用currentColor跟随主题色2 图片地址 填完整的图片网址, https://…/logo.svg这类外链也能用3 图片附件 点「选择」直接上传 PNG / JPG / SVG 三者都留空时仍回退到站点 Logo,再没有就用站名首字,原有行为不变。
-
「只显示标识、不显示站名」开关
标识本身已经是完整字样(宽幅 logo、手写体 lockup)时打开,胶囊里只保留图形并自动收紧内边距,不会出现「图形里写着站名、旁边又重复一遍站名」的情况。
-
关于上传 SVG
Halo 支持 SVG 附件(
image/svg+xml),主题里点「选择」就能直接上传.svg。唯一的坑是默认存储策略的允许类型只有「图片 / 视频 / 音频」,没勾 SVG 时会返回415 不支持上传 image/svg+xml 类型的文件;到后台「附件 → 存储策略」编辑当前策略,把 SVG 勾进允许类型后,上传、选择、前台渲染全链路实测正常。不想动存储策略也可以走「图片地址」或「内联 SVG 代码」。

修复
-
宽幅 SVG 标识被压成小方块
原来所有标识都套在 36 × 36 的圆框里,宽度是高度四倍多的宽幅 logo 会被缩成一条看不清的细线。现在 SVG 标识改为按高度等比缩放:桌面高 32px、宽度上限 168px,手机高 26px、宽度上限 96px,比例不变、不裁切(
object-fit: contain)。 -
手机端左右两块胶囊一高一矮
左侧品牌胶囊(头像 + 站名)原本 50px 高、右侧搜索 / 收藏 / 菜单按钮组 42px,视觉上明显不齐。现在两者统一为 44px 并顶部对齐,标识图片在窄屏收到 32px。宽幅 SVG 标识也一并收窄(≤96px),390px 与 360px 视口都无横向溢出。
-
内联 SVG 的安全过滤
粘贴的代码必须包含
<svg>,且含<script>、javascript:、onload=、onerror=时会被忽略并回退到图片 / 站点 Logo,不会把可执行内容注入页面。
升级说明
- 控制台「外观 → 主题 → 安装」上传本 ZIP 覆盖升级,现有设置全部保留。
- 想用附件方式上传 SVG,请先把 SVG 勾进「附件 → 存储策略」的允许类型;不想改策略就用「图片地址」或「内联 SVG 代码」。
- 标识文件里自带的 CSS / SMIL 动画(比如手写描边动效)在
<img>与内联两种方式下都会照常播放;若想让它静止显示,删掉 SVG 里的<style>块即可。
兼容性
- Halo 2.26.0 或更高版本(已在 Halo 2.27.2 实测通过)
- 建议启用官方链接插件
plugin-links2.5.0(友链、友链申请、朋友圈动态) - 可选的第三方友链申请插件:LinksSubmit(要求 Halo ≥2.20.14)
- 可选插件:
plugin-comment-next1.1.1、plugin-moments1.19.0、plugin-hitokoto-hub3.0.0、plugin-equipment1.1.1、plugin-steam1.0.0 - 现代浏览器(Chrome / Edge / Safari / Firefox),支持
prefers-reduced-motion与prefers-color-scheme;不支持color-mix()的旧内核走实色回退
验证
本地 Halo 2.27.2 热升级至 1.0.18 后实测:
- 标识专项 26 项:附件 SVG 渲染为
img且object-fit: contain、内联 SVG 高度 32px 与currentColor生效、含<script>的代码被忽略并回退、三项全空回退站点 Logo / 首字、宽幅 SVG(237 × 54 手写 lockup)等比缩放不被压扁、隐藏站名后不输出文字并收紧内边距、手机端收窄、左右胶囊等高对齐且 390 / 360 视口无横向溢出 - 回归:横幅标签化 20 项、抽屉 / 箭头 / 页脚 18 项、两套文章模板渲染、横幅与随机访问动画 29 项、LinksSubmit 申请分支 23 项,均 0 失败
Full Changelog: https://github.com/YBRC114514/halo-theme-xiyu/compare/v1.0.17...v1.0.18
资源下载
- theme-xiyu-1.0.18.zip
