因为本人是车车人,所以制作了 hexo-theme-reimu
这样一款博丽灵梦风格的 Hexo 主题,其融合了landscape、Tangyuxian和Shoka三个主题
Github 仓库请点击:(如果觉得好用请点个 star,阿里嘎多)
效果展示请点击:
开发日志请点击:
astro-theme-reimu 效果展示请点击演示网站
hugo-theme-reimu 效果展示请点击演示网站
特性
- 所有的博客常规功能
- 兼容 Hexo v6+
- 响应式布局
- 代码高亮,代码粘贴
- KaTeX 展示数学公式
- Mermaid 展示流程图
- Algolia / hexo-generator-search 搜索
- valine / waline / twikoo / gitalk / giscus 评论系统
- valine / waline 文章阅读统计
- 不蒜子访客统计
- RSS
- 同时支持 iconfont 和 fontawesome
- 黑夜模式
- 图片懒加载
- 加载动画
- TOC
- 回到顶部
- 鼠标动画
- pjax
- ServiceWorker
- live2d
- reimu 鼠标指针
- 内部提供内链/外链/友链卡片的标签插件
- 文章底部版权声明
- 配置自定义 CDN 源
安装
纯小白可以直接使用 reimu-template。其中预先安装了 hexo, hexo-theme-reimu 和其他功能包,只需 克隆仓库-安装依赖-修改配置 即可获得一个基本的博客!
其已经包含如下功能包,你只需要对其进行配置:
- katex (hexo-renderer-markdown-it-plus)
- mermaid (hexo-filter-mermaid-diagrams)
- git deploy (hexo-deployer-git)
- rss (hexo-generator-feed)
使用 npm
1 | npm install hexo-theme-reimu --save |
或直接克隆本仓库至/themes
文件夹下并重命名为reimu
1 | git clone https://github.com/D-Sketon/hexo-theme-reimu.git |
并修改 _config.yml
中的 theme
1 | # Extensions |
使用
基本结构
为了保证显示正确,请参考 _example
在 source
中分别建立 _data
、about
和 friend
文件夹
_data
avatar
文件夹中存储作者头像,默认命名avatar.webp
,可在 内层_config.yml
中做如下配置
1 | avatar: "avatar.webp" |
covers
文件夹中存储文章封面covers.yml
中存储文章封面 url
about
index.md
作为关于页面
friend
index.md
作为友链页面,在 _data.yml
中填入友链信息即可在页面上显示对应好友卡片
封面、头图和图标
封面
封面显示逻辑如下
- 如果文章的 Front matter 中包含 cover 的 url,则该文章头图和首页缩略图均显示该 url
1 |
|
- 如果文章的 Front matter 中包含 cover 为
false
,则该文章不显示头图(首页上仍然是随机图片)
1 |
|
- 如果文章的 Front matter 中包含 cover 为
rgb(xxx,xxx,xxx)
,则该文章头图为对应的渐变纯色(首页上仍然是随机图片)
1 |
|
- 否则查找
covers
文件夹和covers.yml
,并从中随机挑选图片 - 若上述文件均不存在,则显示头图
头图
头图保存于 themes/reimu/source/images/banner.webp
,可在内层 _config.yml
中修改
1 | banner: "/images/banner.webp" |
图标
图标保存于 themes/reimu/source/images/favicon.ico
,可在内层 _config.yml
中修改
1 | favicon: "/images/favicon.ico" |
置顶
在文章的 Front-matter 中添加 sticky: true
1 |
|
代码高亮
为保证代码块的正确显示,请保证外层 _config.yml
中为如下配置
(<7.0.0)
1 | highlight: |
(>=7.0.0)
1 | syntax_highlighter: highlight.js |
代码块同时提供了代码粘贴功能,点击代码块右上角的复制按钮即可复制代码。在内层 _config.yml
中可以对复制功能进行配置。success
为复制成功时的提示,fail
为复制失败时的提示。此外,可以配置版权声明,当复制的字符数大于 count
时会在复制的内容后面添加 content
版权声明。
1 | clipboard: |
站内评论
站内评论可以使用Front matter 中的
comments
独立控制每篇文章是否显示评论。
当comments
为false
时不显示评论,true
或不填时根据_config_yml
的配置决定是否显示。
若基于 Valine
请参考其官方文档完成 LeanCloud
的配置,并在内层 _config_yml
中将 valine.enable
改为 true
,并填入自己的 appId
和 appKey
1 | valine: |
若基于 Waline
请参考其官方文档完成 LeanCloud
的配置,并在内层 _config_yml
中将 waline.enable
改为 true
,并填入自己的 serverURL
1 | waline: |
若基于 twikoo
请参考其官方文档完成 腾讯云 或 Vercel 部署,并在内层 _config_yml
中将 twikoo.enable
改为 true
,并填入自己的 envId
1 | twikoo: |
若基于 giscus,请参考文档完成仓库的配置,并在内层 _config_yml
中将 giscus.enable
改为 true
,并填入对应的数据
1 | giscus: |
若基于 gitalk
请参考其官方文档完成仓库的配置,并在内层 _config_yml
中将 gitalk.enable
改为 true
,并填入对应的数据
1 | gitalk: |
站内搜索
若选择 Algolia,请安装 hexo-algoliasearch
1 | npm install hexo-algoliasearch --save |
并参考其 README 完成对 Algolia
账号的配置,并在外层 _confg.yml
中添加如下配置
1 | algolia: |
在内层 _config_yml
中将 algolia_search.enable
改为 true
1 | algolia_search: |
注意:搜索跳转链接为永久链接,所以请保证外层
_config.yml
中的url
填写正确
若选择 hexo-generator-search,请安装hexo-generator-search
并参考其 README在外层 _config.yml
中添加如下配置
1 | search: |
在内层 _config_yml
中将 generator_search.enable
改为 true
1 | generator_search: |
数学公式
数学公式基于 Katex,请安装 hexo-renderer-markdown-it-plus
1 | npm uninstall hexo-renderer-marked --save |
在内层 _config_yml
中将 math.enable
改为 true
1 | math: |
Mermaid
请安装 hexo-filter-mermaid-diagrams
1 | npm install hexo-filter-mermaid-diagrams --save |
在内层 _config_yml
中将 mermaid.enable
改为 true
1 | mermaid: |
并在需要使用 mermaid 的文章的 front-matter 中添加 mermaid: true
(这个和其他配置的读取逻辑不同,需要注意!)
1 |
|
RSS
1 | npm install hexo-generator-feed --save |
并参考其 README 在外层 _config.yml
完成对 feed
的配置
在内层 _config.yml
中填入生成的 xml
1 | rss: atom.xml |
Icon
Icon 默认使用本项目提供的 iconfont(v0.2.0+)
1 | icon_font: 4552607_ikzjpc9jicn |
如果想要继续使用 fontawesome 图标,请将 icon_font
设置为 false
,此时会使用 vendor
中对应的 fontawesome
1 | fontawesome: |
高级功能
firework
默认开启
1 | firework: |
具体配置请查看 mouse-firework
pjax
默认关闭
1 | pjax: |
pjax 在 v0.0.10 中被引入,用于那些需要添加音乐播放器等需要 SPA 的用户。但其仍然属于实验性质,引入后可能会出现诸如脚本无法执行、脚本重复执行、页面渲染混乱等 BUG。请慎重考虑!
ServiceWorker
默认关闭
1 | service_worker: |
live2d
默认关闭
1 | live2d: |
reimu 鼠标指针
默认开启
1 | reimu_cursor: true |
头图响应式(v0.2.0+)
默认关闭,打开后并提供对应尺寸的图片和媒体查询可以在一定程度上提高移动端的 LCP
1 | banner_srcset: |
文章版权声明(v0.2.0+)
默认关闭
1 | article_copyright: |
此外,也可以通过文章的 front-matter 控制,其优先级高于全局配置
1 |
|
quicklink(v0.2.3+)
默认开启,打开后可以在用户停留在页面时预加载链接,提高用户体验
1 | quicklink: |
过期提醒(v0.2.4+)
默认关闭
1 | outdate: |
赞助(v0.3.2+)
默认关闭
1 | sponsor: |
此外,也可以通过文章的 front-matter 控制,其优先级高于全局配置
1 |
|
Vendor
v0.1.0 对 vendor
进行了较大程度的重构,目前 vendor
路径的组成方式为::cdn|:package@:version/:file
,:cdn
可在 vendor
中自行配置。目前自带以下 CDN 源:
1 | cdn_jsdelivr_gh: https://cdn.jsdelivr.net/gh/ # 仅针对github加速 |
用户可根据网络状况自行切换 CDN 源。
QA
为什么没有播放器功能
因为播放器功能相对独立,且较为复杂,所以本主题不提供播放器功能。如果需要播放器功能,可以参考 hexo-tag-aplayer、hexo-tag-dplayer 等插件。在使用时注意播放器可能会和 pjax,ServiceWorker 等功能冲突。
头像显示不正常
参考 reimu-template 的结构保证头像放置于了 /source/_data/avatar/
下,且命名和配置里的相同(注意不是主题里的 source
文件夹而是主题根目录下的 source
文件夹)
关于和友链页面显示乱码,没有样式
参考 reimu-template 的结构保证 about
和 friend
放置于了 /source/
下(注意不是主题里的 source
文件夹而是主题根目录下的 source
文件夹)
我还是有奇怪的问题
首先尝试直接克隆 reimu-template,并在其基础上进行修改。如果问题依然存在,请到 Github issue上提问,并提供详细的报错信息/复现步骤。不建议在评论区报告问题,因为评论区不方便进行代码排版。