Stellar 独创了其它 Hexo 主题所没有的 Wiki 文档系统,可以自动找到一个项目的所有文档分页,生成一个目录树,还可以手动指定顺序、标题、分组,而非依赖文件路径、文件名来排序和显示。
基本流程
在 blog/source/_data/ 文件夹中创建一个 wiki 文件夹,在其中放入各个项目的文档。以 Stellar 项目为例,文件名就是项目的 id:
1 | name: Stellar |
Wiki 列表卡片
Wiki 总列表使用自适应网格,一行可按可用空间显示多张固定 3:4 的竖版卡片;每列最小宽度为 240px,空间充足时自动均分并铺满容器,空间不足时回落为单列。卡片使用独立的 Wiki 封面组件,不与文章 Hero 卡片共用。只有配置 cover 时才显示封面背景;未配置时保持纯色空背景,并在 hover 使用通用 block-border 边框。有封面时,原图加载与封面主题色计算均完成后才显示主题色渐变模糊层;平均色计算失败会确认使用主题色回退,加载失败自动降级为空封面,避免空白区域出现亮色蒙版或默认主题色闪现。信息层按自身内容高度贴在封面底部:上方文案区与全宽项目底栏分别设置内边距,项目底栏使用 10% 不透明度黑色轻微区分。内容区使用封面主题色的渐变模糊层:主题色经深色化以保证白字可读,从卡片 50% 开始渐显,在最底部达到不透明;悬浮时显示同源但明度提高 20 个点、跟随全局连续曲率的圆角边框。标签、适用范围与热度统一复用元信息的无背景、无边框主题文字样式,间距为 .5rem 1rem;适用范围前置通用多设备图标,热度数值继续取 GitHub star 数据并显示为通用火焰图标。项目区不显示顶部边框,项目图标使用 30% 圆角和 var(--block) 背景;未配置 icon 时使用内置 Solar default:documents,颜色为 var(--text-p2)。底部显示 headline 营销标题(字号 1.25rem、字重 700,为空时取 title,再回退 name)、可选的 available、热度,以及图标、name 和副标题。副标题优先取显式 subtitle;其中包含 | 且左侧非空时只显示左侧,否则再按 description、内容摘要的顺序取值。
available 是可选字符串;未配置时不会显示“适用于”。配置 repo: owner/repo 时会动态显示 GitHub star,仓库不存在或请求失败时自动隐藏。
在此文档项目的 md 文件的 front-matter 部分指定所属的项目 id (即上一步创建的文件名 id.yml)
1 |
|
在 blog/source/_data/ 文件夹中创建一个 wiki.yml 文件,在其中写入需要显示的项目 id:
1 | - hexo-stellar |
这样在项目列表(wiki)页面就可以看到刚刚创建的项目了。
项目分页索引
指定项目所在文件夹和目录树:
1 | base_dir: /wiki/stellar/ |
如果目录树不需要分组,可以这样写:
1 | base_dir: /wiki/stellar/ |
是否显示封面
项目可以显示一个全屏封面,封面占据一个屏幕的高度,会居中依次显示项目的 logo、标题、描述。开启项目封面方法如下:
1 | cover: https://res.xaox.cc/gh/cdn-x/wiki@main/stellar/icon.svg |
如果 logo 中已经包含了项目标题,可以这样设置不显示项目标题:
1 | coverpage: [logo, description] |
项目首页 Hero 封面
开启 coverpage 后,项目首页会渲染为全屏双栏 Hero。cover 仍只用于 Wiki 列表卡片;Hero 的 background 只接受静态图片 URL,动态效果通过独立的 animation 配置启用。静态图在底部 20% 会渐变模糊并过渡到站点背景色。
animation.type: galaxy 使用四层 WebGL 星场呈现纵深移动、辉光、闪烁与自动旋转,默认带有轻量鼠标排斥。Galaxy 默认透明,可以单独使用,也可以叠加在 background 图片上;两者同时存在时,标题和按钮按图片平均色自适应,动画不可用时仍保留图片。仅配置 Galaxy 时使用纯黑底色。离开视口或页面进入后台时动画自动暂停;浏览器启用“减少动态效果”、不支持 WebGL 或动态层加载失败时只显示静态回退。旧的 background: galaxy 写法不再支持。
1 | background: https://res.xaox.cc/hero.webp # 可选,可与动画叠加 |
Galaxy 支持以下全部参数与默认值:
1 | animation: |
参数缺失时逐项使用默认值,未知参数会被忽略。focal 的两个数值限制在 0–1;rotation 接受两个有限数值;hueShift 会归一化到 0–360;速度、密度和强度参数必须为非负有限数值;rotationSpeed 可以为负数以反向旋转;布尔参数只接受 true 或 false。非法值只回退当前参数,不影响其它有效配置。显式设置 transparent: false 时,不透明 Canvas 会覆盖同时配置的背景图片。
终端模式的 commands[].codes 支持多行文本,访客可切换安装方式并一次复制完整命令。图片预览改为:
1 | preview: |
Hero 顶部左侧是无背景的站点标题按钮,文字取站点 title、颜色沿用 Hero 的 --text-banner,点击返回网站首页。封面左侧会自动显示 name、headline(为空时回退 title)和 description;主标题会随背景明暗切换为高对比的黑或白,并保留同源主题色的柔和发光轮廓。配置 repo 时,内置“源码”按钮及 GitHub 最新 tag 版本信息会自动出现;版本信息加载期间不显示占位文字或边框,成功后淡入,并以新标签页打开 GitHub 返回的链接(缺失时回退到对应 tag 页面)。无 tag 或请求失败时,该按钮会自动移除。“源码”按钮背景与边框使用 --text-banner,文字与图标反转相同颜色,始终与背景形成相反关系。启用 plugins.card_hover 后,源码、文档与自定义 action 按钮会显示鼠标跟随光斑,但不会倾斜或上浮;插件关闭、触屏或减少动态效果时保持原样。最新版本标签的边框取同源主题色的 50% 透明度,文字不受影响。内置“文档”按钮固定跳转到当前首页正文,actions 用于追加在线演示等自定义按钮。直接打开不带 hash 的项目首页时,页面默认停在 Hero 顶部;仅显式访问 #start 或点击“文档”按钮时才定位到正文。内置按钮、终端复制、未命名命令序号与辅助标签会随站点 language 切换;actions[].title 是项目自定义文案,不会由主题翻译。图片背景与仅 Galaxy 的黑色底图都会沿用 Wiki 列表封面的文字自适应逻辑:标题取高对比色,说明与玻璃按钮取同源主题色;终端预览则将该主题色与透明色各混合 50%,再叠加背景模糊,主题色尚不可用时回退站点背景色。图标使用主题内置的 default:* 名称,例如 default:monitor。
项目文档标签
如果您有很多项目,有些项目是有相关性的,可以相同的 tags 值:
1 | tags: 博客主题 |
也可以设置多个 tags 值:
1 | tags: [博客主题, 开源项目] |
项目的 GitHub 仓库信息
设置了 repo 值就会在右上角显示项目仓库的相关链接:
1 | repo: xaoxuu/hexo-theme-stellar |
提示:如果项目首页(如
source/wiki/{id}/index.md)正文为空,且配置了repo(可选branch),该页会自动以 GitHub 仓库的 README.md 作为主页正文——标题自动适配文章格式,相对图片/链接解析到仓库镜像地址,右侧目录也会在渲染后自动生成。branch缺省使用仓库默认分支;首页正文非空时以本地内容为准。
说明:正文为空的 README 主页(以及其它 wiki 页)的 meta description / og:description / JSON-LD 描述会优先取用项目 YAML 中的
description作为备用方案;页面 front matter 显式设置description(或open_graph.description)时以页面级描述为准。
项目评论设置
如果希望项目的所有分页使用相同的评论数据,可以在这里覆盖评论配置:
1 | comment_title: '评论区仅供交流,有问题请提 [issue](https://github.com/xaoxuu/hexo-theme-stellar/issues) 反馈。' |
侧边栏组件
如果您希望自定义某个项目的侧边栏组件,可以设置 sidebar 值:
可以覆盖组件:
1 | leftbar: |
todo
在目录树中隐藏某篇文章
可以在 front-matter 中不设置 title 标题,或者将 title 改为 seo_title:
1 | title: 原本的标题 |
todo
显示许可协议
沿用主题配置文件中设置的:
1 | license: true |
也可以指定协议内容:
1 | license: '本文采用 [署名-非商业性使用-相同方式共享 4.0 国际](https://creativecommons.org/licenses/by-nc-sa/4.0/) 许可协议,转载请注明出处。' |
显示分享
1 | share: true |
修改 wiki 路径
修改如下配置:
1 | site_tree: |