Volantis 建站记录
本文记录了我在使用Volantis主题建站时操作的一些内容,或简或繁,主要是为了方便日后主题升级,设备更换时能够顺利迁移,同时向参考的一些站点博主表示感谢。
站点参考
本站参考了一些博客站点的设置及美化,或受其启发,或用到其类似的功能或配置,不能一应俱全的列举出来,都一并表示感谢。
恶搞标题
当用户在访问站点切换到其他网页时,可以呈现恶搞标题效果。
-
新建
FunnyTitle.js
在主题文件夹
\themes\volantis\source\js
中新建FunnyTitle.js
,在其中添加如下代码:\themes\volantis\source\js\FunnyTitle.js 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17// 浏览器搞笑标题
var OriginTitle = document.title;
var titleTime;
document.addEventListener('visibilitychange', function () {
if (document.hidden) {
$('[rel="icon"]').attr('href', "/funny.ico");
document.title = '╭(°A°`)╮ 呀怎么舍得走哇 ~';
clearTimeout(titleTime);
}
else {
$('[rel="icon"]').attr('href', "/favicon.ico");
document.title = '(ฅ>ω<*ฅ) 噫又回来了耶 ~' + OriginTitle;
titleTime = setTimeout(function () {
document.title = OriginTitle;
}, 2000);
}
});其中
favicon.ico
是正常图标,funny.ico
是用户切换到其它标签后你网站的图标。 -
启用这个
.js
文件在
\themes\volantis\layout\layout.ejs
文件中的<body>
下面添加如下代码:\themes\volantis\layout\layout.ejs 1
2<!--浏览器搞笑标题-->
<script type="text/javascript" src="/js/FunnyTitle.js"></script>另外,也可以将上述
FunnyTitle.js
托管到Github
上,在此引用jsdelivr
的加速链接。
底部建站时间
-
设置
footer.ejs
文件这里首先需要设置
footer.ejs
文件,其在Volantis
主题的位置是\themes\volantis\layout\_partial\footer.ejs
。在其中的第48行的位置后添加如下代码:\themes\volantis\layout\_partial\footer.ejs 1
2
3
4
5
6
7
8else if (item == 'runtime_count') { %>
<span id="runtime_span"></span>
<script type="text/javascript">function show_runtime(){window.setTimeout("show_runtime()",1000);X=new
Date("5/25/2021 00:00:00");
Y=new Date();T=(Y.getTime()-X.getTime());M=24*60*60*1000;
a=T/M; dnum=Math.floor(a); b=(a-dnum)*24; hnum=Math.floor(b);c=(b-hnum)*60; mnum=Math.floor((b-hnum)*60); snum=Math.floor((c-mnum)*60);
runtime_span.innerText ="⚡"+"本站在风雨飘摇中度过了 " + dnum + " 天 " + hnum + " 小时 " + mnum + " 分 " + snum + " 秒" + "⚡"};show_runtime();</script>可以根据需要修改
runtime_span.innerText
中的文本。注意
item == 'runtime_count'
其中runtime_count
可以自定义,在主题配置文件中引用相同的名称即可。需要引用的内容只有<span id="runtime_span"></span>
,具体看下面。 -
启用该设置
在
Volantis
中启用它,找到site_footer
部分,在其下加入:_config.volantis.yml 1
2runtime_count:
<span id="runtime_span"></span>别忘了在前面的
layout:[]
部分中加入runtime_count
。
网页弹窗
这里主要运用 javascript
插件 :[ Sweetalert
、Sweetalert-github
]
具体安装和使用方法可见其 官网
和 Github
。我采用了直接引用的方法。
在 \themes\volantis\layout\_partial\head.ejs
文件中的第二行 <meta charset="utf-8">
后加入:
1 | <meta charset="utf-8"><!-- 在此后加入 --> |
或者使用 jsdeliver
:
1 | <meta charset="utf-8"><!-- 在此后加入 --> |
并由此实现了以下几个功能 (目前网页只保留了2) :
- 进入网站弹窗
- 复制网站内容弹窗
- 复制代码弹窗
- 右键复制弹窗
- 网站弹窗+自动切换暗黑主题
进入网站弹窗
这里参考了:https://luosw.fun/post/e281.html ,但这篇博文提到的关于自动调整暗黑模式+弹窗的逻辑反了,随后又看了一下colsrch
大佬的博文 https://colsrch.cn/posts/9eae9d7b/
这里直接设置 \themes\volantis\layout\index.ejs
文件就可以了,在其开头加入:
1 | <!-- 网页访问欢迎弹窗 --> |
这里 swal()
是引用该弹窗的函数,其有四个可选参数:title
、text
、icon
、button
。其中 icon
有四个默认的选项,可设置为 icon
图标,这里在下使用的是图片。
复制网站内容弹窗
复制代码弹窗
这里需要设置 layout\third-party\clipboard\script.ejs
文件,在后20行 clipboard.off('success').on('success', function (e) {}
中:
1 | <!-- 复制代码弹窗 --> |
右键复制弹窗
这里需要设置两项内容:
- 链接地址复制弹窗
- 文本复制弹窗
均在 layout\_partial\rightmenu.ejs
文件中进行设置
-
链接地址复制弹窗
在上述文件末尾的
function copyString(str) {}
函数中document.body.removeChild(input);
后面添加如下内容:layout\_partial\rightmenu.ejs 1
2
3
4
5
6
7<!-- 右键菜单栏复制弹窗 -->
swal({
title: '复制成功',
text: "文本/链接已复制,请遵守相关授权协议。\n 转载请记得注明出处",
icon: 'success',
button: "我承诺遵守",
}); -
文本复制弹窗
还是在上述文件中,找到
if ('<%= theme.plugins.clipboard.enable %>' == 'true') {}
将其设置为如下:layout\_partial\rightmenu.ejs 1
2
3
4
5
6
7
8
9
10
11
12
13if ('<%= theme.plugins.clipboard.enable %>' == 'true') {
<!-- 文本复制弹窗 -->
let str_luosw = window.getSelection().toString();
copyText.style.display = 'block';
hrText.style.display = 'block';
<!-- 文本复制弹窗 -->
copyText.addEventListener("click", function (e) {
copyString(str_luosw);
}, {
once: true
});
}
网站弹窗+自动切换暗黑主题
这里需要设置的是 layout\_partial\scripts\darkmode.ejs
。
首先在该文件开头第一行加入:
1 | <script type="text/javascript" src="https://cdn.jsdelivr.net/gh/hermitlsr/CDN@master/judge_time/js.js"></script> |
再在文件底部 <script>
前加入:
查看代码
1 | <!-- 自动夜间模式加弹窗 --> |
百宝箱页面设置
这是 Viggo
大佬制作的一个网站导航项目 WebStackPage
,并由 HCLonely
制作为 hexo-theme-webstack
引用这个页面实际上是做一个新的主题网页,使用二级域名指向它。也可以做成分站形式,但是对于这样需要经常添加修改的网页不是很方便。
这里具体可以参考:
- 黑石大佬:为Hexo博客建立其他主题分站
- 诗颂:搭建Hexo-WebStack网址导航
我主要是在页面抬头位置添加了几个链接,并引入了心知天气插件,这部分也是参考了黑石大佬和TRXH的百宝箱页面。
在主题文件夹下设置 themes/webstack/index.js
文件:
1 | <li class="hover-line" style="min-height: 75px;"> |
引入心知天气插件,这部分主题代码可以直接在心知天气官网生成:
1 | <li class="hover-line" style="min-height: 75px; "> |
注意 style="padding: 29px 20px;
这里设置的数值是为了使其与其他元素保持水平。
由于心知天气会自定义样式,为了保持样式一致,还重新定义了字体颜色,在 source\css\hclonely.css
中设置如下:
1 | .dsrBSL { |
导航栏全屏以及页面透明度
导航栏全屏
当时看到几个博客页面导航栏占据全屏之后设置透明效果还蛮好看,就迫不及待自己搞一搞,当然纯靠 F12
的方法失败了,最后这个是 inkss
大佬提供的方法。后面又去 Volantis
官方文档里翻东西的时候偶然发现这个问题在鸣谢板块的评论区有一个很长的讨论,更觉得当时自己很憨了。
在 \source\css\_layout\main.styl
文件下按上述方法进行设置:
1 | .l_header |
在添加对移动端的设置
1 | // 调整移动端的显示 |
页面透明度
这里使用了 F12
大法。页面透明度这里需要对 导航栏
,侧边栏
以及文章主体
三个位置分别进行设置。这里顺便调整了侧边栏的宽度。
1 | .l_header.auto.show { |
另外侧边栏宽度和文章总宽度在 Volantis
主题中有一个总长度设置:max_width: 1270px
。
页面宽度的设置已经取消了,由于固定了 .l_side
在移动端的距离就不会自动变化,就会导致 .l_main
部分变窄。这里直接修改 layout.styl
,其定义了侧边栏的基本参数,位于 volantis\source\css\_defines\layout.styl
。将其中 $sidebar
这个参数设置为 260px
念两句诗
Volantis
主题本身就集成了一个每日一诗
在侧边栏的 blogger
中,在下想用这类似的插件来修饰页面,于是就引入了 今日诗词
插件:
-
首先设置样式
在
\source\css\_layout\main.styl
中加入:查看代码
\source\css\_layout\main.styl 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49// 念两句诗
.poem-wrap {
position: relative ;
width: 730px ;
max-width: 80% ;
border: 2px solid #797979 ;
border-top: none ;
text-align: center ;
margin: 80px auto ;
}
.poem-left {
left: 0 ;
}
.poem-right {
right: 0 ;
}
.poem-border {
position: absolute ;
height: 2px ;
width: 35% ; //调整框线的长度
background-color: #797979 ;
}
.poem-wrap p {
width: 70% ;
margin: auto ;
line-height: 30px ;
color: #797979 ;
}
.poem-wrap h1 {
position: relative ;
margin-top: -100px ;
display: inline-block ;
letter-spacing: 12px ;
color: #797979 ;
border-bottom: 1px solid rgba(68,68,68,0) ;
}
.poem-wrap p#poem {
font-size: 25px ;
text-align: center ;
}
.poem-wrap p#info {
font-size: 15px ;
margin: 15px auto ;
text-align: center ;
} -
在需要的地方加入
Html
语句具体细节可以参考 今日诗词官网
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16<div class="poem-wrap">
<div class="poem-border poem-left"></div>
<div class="poem-border poem-right"></div>
<h1>留言板</h1>
<p id="poem"></p>
<p id="info"></p>
<script src="https://sdk.jinrishici.com/v2/browser/jinrishici.js" charset="utf-8"></script>
<script type="text/javascript">
jinrishici.load(function(result) {
var sentence = document.querySelector("#poem")
var info_in = document.querySelector("#info")
sentence.innerHTML = result.data.content
info_in.innerHTML = '【' + result.data.origin.dynasty + '】' + result.data.origin.author + '《' + result.data.origin.title + '》'
});
</script>
</div>
页面的头像信息设置
这里参考了 TRHX
大佬的样式,然后直接用了一个较为简单的方法呈现出来:
1 | <center><a href="https://hermitlsr.top/about/"><img src="https://cdn.jsdelivr.net/gh/hermitlsr/image-for-hermitlsr.top/web/rickavatar.png" width="100" height="100"> </a></center> |
公式加载问题
安装配置 KaTeX
基本没有问题 ,但是公式渲染还是有问题,这里根据官方推荐,参考了 https://www.micdz.cn/article/katex-on-volantis/ ,完美解决。做法就是在 themes\volantis\layout\_partial\head.ejs
文件的最后添加:
1 | <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.css" integrity="sha384-zB1R0rpPzHqg7Kpt0Aljp8JPLqbXI3bhnPWROx27a9N0Ll6ZP/+DiW/UqRcLbRjq" crossorigin="anonymous"> |
电子时钟部件
使用了插件:hexo-electric-clock
参考了: https://zfe.space/post/hexo-electric-clock.html
该插件可以自动获取访问者的 ip 地址,同时以此 ip 地址展示天气时间等信息
步骤:
- 下载该插件
- 配置插件
- 调整
css
样式
下载该插件
1 | npm i hexo-electric-clock --save |
按照参考中的建议,需要加上 --save
否则本地预览可能不生效。
插件配置
在博客根目录的配置文档 _config.yml
中 加入:
1 | # 电子钟 |
主要需要修改的地方是 layout
,它决定了电子时钟的具体位置。type
有两个选项 class
和 id
对应着 Html
中的两种属性。其中 class
不具有唯一性,在一个小块中,常常有多个 class
嵌套,这就需要使用 index
指定是第几个 class
。这里为求方便,我在需要展示电子钟的位置新增了 一个id
。
我希望放的位置是侧边栏的公告栏部分,在 Volantis
主题中,这是以文本部件的形式呈现 ( class: widget text shadow floatable desktop
),需要在 content
部分增加 id
。在主题文件夹中找到 ..\volantis\layout\_widget\text.ejs
文件,在第4行 <div class='content'>
之后加入:
1 | <div id="clock"></div> |
在其他部件中加入同理。
调整 css
样式
这里是根据自己的喜好进行设置。
在主题文件 \source\css\_layout\main.styl
文件中加入:
1 | .card-background { |
当然,也可以在插件的 css
中直接修改,位置是 ..\node_modules\hexo-electric-clock\clock.css
增加朋友圈
该功能由小冰大佬完成的,可以将友链网站中更新的文章集中展示,目前支持 volantis、butterfly 等五个主题的友链爬取,以及github和gitee友链的爬取,已经更新到 beta1.5
还在继续开发,可参见:
原项目地址:https://github.com/Rock-Candy-Tea/hexo-circle-of-friends
配置教程:https://zfe.space/post/friend-link-circle.html
配置的过程中遇到一些坑
_config.yml
中的github
和gitee
都需要取消注释,不需要的部分设置enable=false
。- 如果在自己的友链界面加入了自己的链接,可以设置
if user_info[1] != '你的链接':
,排除自己的文章。 - 配置好后,一般是整点开始爬取,所以会延迟生效,不用担心没配置好。
- 在
volantis
中配置只需要新建一个page
,然后加入<div id="moments_container"><script src="/js/moments.js"></script></div>
即可。
文章永久链接
之前采用重设 urlname
的方式避免中文标题的编码问题,但是每次写文章都要自己输入一次,太麻烦。现在采用 hexo-abbrlink
插件进行生成。仅需在站点根目录的 _config.yml
中做如下设置
1 | permalink: :year-:month-:day/:abbrlink.html |
最终生成的本文链接形式:https://www.hermitlsr.top/2021-06-26/40ecd548.html