FIT2CLOUD
Cosolar 的图标

Cosolar

4,637
1,630

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

1.1.3
Cosolar 发布于
>=2.20.0

halo-theme-cosolar v1.1.3

页脚设置重构

将页脚相关设置统一收归至「页脚设置」分组,便于集中管理;并对各功能区做分组整理,提升配置直观性。

  • 版权与备案迁移:将原「基础设置」中的 footer_text(页脚版权文字)与 icp(ICP 备案号)移动到「页脚设置」分组。
    • theme.config?.basic?.footer_texttheme.config?.footer?.footer_text
    • theme.config?.basic?.icp / theme.config.basic.icptheme.config?.footer?.icp / theme.config.footer.icp
  • 页脚导航链接分组:将 privacy_urlterms_urllinks_urlabout_url 整理进新增的 legal_links 子分组,每个链接配独立显示开关(privacy_enabled / terms_enabled / links_enabled / about_enabled),关闭后对应链接不渲染。
    • layout.htmlth:with 同步改为从 legal_links 读取,开关关闭时 URL 变量置为 null
  • 浅色 / 深色模式分组:将页脚背景图、透明度、文字与图标颜色整理为 light(浅色模式)与 dark(深色模式)两个子分组,取代原先平铺的 bg_image / bg_image_dark / social_color / social_color_dark 等字段。
    • 读取路径更新:footer.bg_imagefooter.light.bg_imagefooter.social_color_darkfooter.dark.social_color 等,透明度同理分属 light / dark
  • 页脚订阅表单提交地址迁移:将 footer_subscribe_action 从「博主信息」(social) 分组移动到「页脚设置」分组末尾。
    • theme.config?.social?.footer_subscribe_actiontheme.config?.footer?.footer_subscribe_action

页脚新增服务商 / 赞助商信息

在页脚底部新增可配置的服务商 / 赞助商信息模块(如云服务、CDN 提供商)。

  • 新增「页脚设置 → 服务商/赞助商」子分组 (footer.sponsor):
    • enabled:是否显示服务商信息(默认关闭)。
    • icon:Iconify 图标名(如 ri:cloud-line)或完整图片 URL。
    • name:服务商名称(如 腾讯云、阿里云、京东云)。
    • url:服务商链接,留空则名称显示为纯文本。
    • prefix / suffix:名称前 / 后文字,留空不渲染、不留空格。
    • name_is_link:名称是否为超链接(默认开启)。
  • 渲染结构:prefixsuffix 在外层,iconname 包在 .footer-sponsor-brand 内紧挨显示(gap:0,icon 加 margin-right:2px 微调);仅当 enabledname 非空时渲染整块。
  • 新增 .footer-sponsor 系列样式,复用主题色变量与 hover 过渡,与页脚其它元素风格一致。

效果示例(配置 name=腾讯云、url=https://cloud.tencent.com、suffix=提供 CDN 加速/云存储服务):

☁ 本网站由 腾讯云 提供 CDN 加速/云存储服务

其中「腾讯云」为指向服务商链接的超链接,图标使用主题主色调。

  • 重新设计并重构友情链接页面 (links.html / links.css / links.ts),统一卡片视觉与交互。
  • 新增分类导航,支持按分组筛选;分类图标可通过注解 (theme-cosolar-linkgroup-icon) 自定义(Iconify / iconfont)。
  • 新增详细 / 简洁两种视图切换,偏好通过 localStorage 记忆。
  • 提交友链表单:
    • 新增「申请友链」CTA 区块开关 (links.show_apply_cta)。
    • 新增表单字段显示控制 (links.form_fields),可隐藏 logo / 邮箱 / 描述 / 友链 / RSS 等字段。
    • 提交成功 / 失败提示优化为居中胶囊样式,并修复关闭弹窗后提示残留的问题。
    • 验证码、表单等样式在深色模式下同步适配。
  • 移动端专项优化:
    • 分类导航改为下拉选择,避免网格溢出。
    • 顶部「分类 + 提交友链」整合为同一行。
    • 工具栏(搜索 / 排序 / 视图切换)整合为单行布局。
    • 卡片网格使用 minmax(0, 1fr),消除横向滚动;卡片描述最多显示 3 行并省略。
    • 申请弹窗内验证码与图片同排,合理分配宽度。

登录页面 (Login) 样式重构与移动端适配

  • 社交登录按钮重做:
    • 按 Halo OAuth2 插件真实 DOM 结构(.pill-items > li > form.social-auth-provider-form > button)编写样式,修复原规则被 .cos-card form button[type="submit"] 覆盖导致样式不生效的问题(提升选择器特异性并加 !important)。
    • 统一为中性描边胶囊按钮:白底、--c-border 边框、圆角,悬停仅文字 / 边框变主题色,不浮动、无阴影动画、不区分第三方平台品牌色。
    • 解除 .pill-items li 的边框影响,避免按钮外层出现黑框。
    • PC 端彻底移除悬停动画(transition 仅过渡颜色,transform:none、阴影锁定)。
  • 登录主按钮:
    • 补充 min-height:48pxline-height:1,修复不同浏览器默认行高导致的高度异常。
  • 移动端(≤480px)独立布局:
    • 卡片全宽撑满屏幕、无阴影、内容自然紧凑,不再强制垂直居中导致大片空白。
    • 输入框高度提升至 54px、登录按钮 52px、字号 16px,触控更友好。
    • 社交登录按钮改为自适应排布(flex-wrap,单项 min-width:140px),列数由后台配置决定,不写死。
    • 平板及以下隐藏登录页背景图,仅保留纯色背景,只显示登录表单。
  • 构建产物 login-*.css 同步更新。

文档与配置

  • 新增 docs/links-rest-api.mddocs/links-theme-api.md,说明友情链接 REST API 与主题集成能力。
  • settings.yaml 新增友链相关设置项。
  • annotation-setting.yaml 新增 LinkGroup 图标注解字段。

其他

  • main.css 全面整理与变量统一。
  • 移除废弃的 password-reset.css,相关样式并入 main.css
  • 更新 README.md.gitignore

分页组件 (Pagination) 重构

  • 重新设计 src/partials/pagination.htmlmain.css 中的分页样式,使其与文章卡片视觉权重协调。
  • 结构精简:移除首页 / 末页按钮,保留「上一页 / 当前页码 / 下一页」核心控件,跳转区移除「跳至 / 页」中文,仅保留输入框 + Go 按钮。
  • 视觉层级:
    • 下一页:主色实心按钮(最强 CTA),hover 时背景变深 + 阴影光晕 + 图标向右滑动 2px。
    • 上一页:次级描边按钮,hover 时主色文字 + 淡背景 + 图标向左滑动 2px。
    • 当前页码:弱化文本 当前 / 总,字号 / 字重区分主次,不抢戏。
  • 尺寸压缩:按钮高度统一为 28px(PC)/ 24px(移动端),圆角 6-8px,与文章卡片标签同等量级。
  • 响应式:
    • PC 端:上一页 / 下一页显示「图标 + 中文」组合,最直观易认。
    • 移动端(≤640px):自动隐藏中文文字标签,仅保留图标 + 页码,节省横向空间。
  • 修复:SVG 与中文文字垂直居中对齐(SVG 设为 display:block + flex item,文字 line-height:1)。
  • 修复:下一页按钮 hover / active 态文字颜色未显式声明导致与绿色背景同色「消失」的问题。

链接管理插件:较新版beta加入了友链提交功能,具体可以查看插件说明。
image

资源下载

  • halo-theme-cosolar.zip