shokaX 主题基于 shoka 主题进行二次开发,据说是因为原主题停止更新...
因为各种原因吧,若按照 shokaX
作者写的文档更改配置的话,还需要一定程度上参考一下 shoka
主题的配置文档,
所以,我决定记录一下这次博客迁移中对 shokaX
主题进行的更改。
# 主题安装
shokaX
主题配置文档中,使用主题作者自己搭的工具 SXC
进行安装,
注意:因为自定义内容较多,所以选择从 github
安装。
1 | hexo init |
# 主题修改
# 值得一说的基础配置
# 顶栏
如果想和 shoka
主题站点的顶栏配置一样的,可以参考我的配置:
shokaX 配置文档中说得也够详细了,但某些话读起来总有点谜语人的感觉,比如超链接的部分,文档的说法实在是令人迷惑...
1 | menu: |
关于自定义 icon 的添加, shoka
的配置文档中有提供一种解决方法,但建议参考我后面的解决方案 [这里]
# 评论系统
因为 minivaline
停止维护且 valine
评论系统存在严重的安全问题, shokaX
推荐使用 valine
系其他评论系统代替。
这里提供我的 waline
的配置方案(只放了与 shokaX
配置文档中不一样的部分):
1 | waline: |
其中, serverURL
按照 waline
官方文档绑定了域名, local.placeholder
为评论框中默认显示的文字
placeholder 与 valine 系统配置不同,我是在 waline 官方文档 从 Valine 迁移 中找到的
# 搜索系统
algolia
必须参考官方文档进行配置,需要注意的是:
algolia
的配置应该是在_config.yml
文件中的,我也不知道为啥要在config
里:
也许是一定得这样?- 记得要运行
hexo algolia
将数据更新到 index 中
# 默认图片更改
博客根目录下创建 source/_data/assets
文件夹,要改哪张图,直接将你的图片名称更改为对应的即可。原图片在主题目录的 source/assets
文件夹下。
比如你要替换 favicon.ico
文件(站点图标),就把你的图标文件重命名为 favicon.ico
,然后放到 source/_data/assets
文件夹下。
基础的部分不再赘述,配置可参考 shokaX 和 shoka 主题的配置文档。
# 主题文件的修改和配置
# 音乐播放器
配置格式参考 shoka
的配置文档,记得改的链接必须是有效的、公开的歌单,
有效指的是:歌单中至少有一首歌不是 VIP 专享、能播放。否则会加载默认歌单。
此外,如果你的播放器根本加载不出来,请检查主题目录下的 source/js/_app/player.js
和 player.ts
,
全局搜索 meting
应该就能看到(因为是基于 meting-api 这个项目的)
上图中的代码是经过更改的,原来有问题的地方是在: /meting/api?server=
,把 api
删掉就行了
# TAB 标签 favicon 内容修改
shoka 主题下,离开和进入博客页面时,浏览器 TAB 标签的内容会做出更改,
修改这些内容的方式是更改主题目录的 language
文件夹下的文件,以 en.yml
为例:
修改这两行文字就行。
# 底部 foot 内容删改
不是有意要删掉 shokaX
的链接,页脚再加上一行实在是有点丑陋,看在我写了这篇文章的份上就放过我吧 <(_ _)>
更改位置在主题目录下, layout/_partials/footer.pug
文件中
pug
文件还是简单易懂的,主要还是说一下增加的一言功能:
(API 链接来自 hitokoto)
主要代码如下:
1 | if theme.footer.sentences |
简单来说就是加了两个 div
,一个是一眼主体,一个是来源,分别给上 id
然后添加一个 script
,脚本中 fetch
hitokoto
的 API 地址,然后根据 id
找到对应的块,并使用 innerText
覆盖内容。
# iconfont 图标库添加
shoka
原作者给的方法是评论留言,等他看到之后,把你的用户加到他的项目里。
因为是只读权限,所以你可以任意复制项目里的 icon
,再添加到你自己的项目中使用,最后再把配置文件中的 iconfont
一项改为自己项目的就行。
但是这要建立在作者看到你的评论留言的基础上,鉴于他现在已经停止更新了...
所以建议按照我的方法直接改改主题文件更合适一点,而且我的方法也简单粗暴。
-
首先,先配好
iconfont
的项目设置:FontClass/Symbol 前缀
改为i-
,Font Family
改为ic
,
记得重新生成一下在线链接。 -
然后回到 hexo 中,配置文件中的
iconfont
下面加一个iconfont_plus
的配置,名字随意,看着改就行 -
然后找到主题目录下的
source/css/
文件夹,创建一个叫做_iconfont_plus.styl
的文件,文件的内容就是你的iconfont
项目在线链接的最后部分:
-
找到主题目录下的
scripts/generaters/config.js
文件,如下位置添加一个'iconfont_plus'
:
(加了这个之后,就可以在主题目录之外修改了,根目录下增加文件source/_data/iconfont_plus.styl
,但也可以不加) -
找到主题目录下的
source/css/_variables.styl
文件,增加:
-
接下来修改同文件夹下的
app.styl
文件,这一步将iconfont
项目的css
文件import
进了主文件
添加代码:1
2
3
4if $_iconfont_plus = hexo-config('style.iconfont_plus')
@import $_iconfont_plus;
else
@import "_iconfont_plus"; -
最后修改
source/css/_common/scaffolding/base.styl
文件中,添加代码:
1
2
3
4
5
6
7
8
9@font-face {
font-family: 'ic';
src: url('//at.alicdn.com/t/c/font_' + $iconfont_plus + '.eot');
src: url('//at.alicdn.com/t/c/font_' + $iconfont_plus + '.eot?#iefix') format('embedded-opentype'),
url('//at.alicdn.com/t/c/font_' + $iconfont_plus + '.woff2') format('woff2'),
url('//at.alicdn.com/t/c/font_' + $iconfont_plus + '.woff') format('woff'),
url('//at.alicdn.com/t/c/font_' + $iconfont_plus + '.ttf') format('truetype'),
url('//at.alicdn.com/t/c/font_' + $iconfont_plus + '.svg#ic') format('svg');
}
注意,这一步中要检查你的iconfont
项目在线链接是否和此处的匹配,若不匹配需要修改。
现在可以自由添加 icon 了,格式为: <i class="ic i-subway"> </i>
。
我们只需要将新增的 icon 添加到自己的项目,然后更新一下在线链接,最后修改一下配置文件中 iconfont_plus
的内容。
祝:食用愉快