博客搭建备忘录
前言
这里是搭建博客时遇到的一些问题,因为怕以后忘记了会多走弯路,就记在这里了。
看了众多大佬的魔改博客,自觉像我这样没有前端基础的人,只能是小打小闹一般图一乐,不好好学习是永远不可能达到那样的高度的……
魔改记录存档
记录魔改过程,便于后续恢复与更新
为博文添加统计 ECharts 图表
操作方法
其他步骤与参考博文基本一致。在添加 charts.js
时需要注意路径位置。
在 [Blogroot]\themes\butterfly\scripts\helpers\
或者是[Blogroot]\node_modules\hexo-theme-butterfly\scripts\helpers\
(具体与安装方式有关)目录下新建 charts.js
文件,然后添加以下内容:
const cheerio = require('cheerio') |
在添加黑夜模式适配时,需要注入相应的代码到底部
function switchPostChart () { |
添加右键菜单
感谢:
Butterfly魔改:自定义右键菜单 | 张洪Heo (zhheo.com)
右键菜单
添加...butterfly/layout/includes/dorakika/rightmenu.pug
代码如下
#rightMenu |
然后在 ...butterfly/layout/includes/layout.pug
中引入
doctype html |
然后将样式表 inject
到头部,脚本 inject
到底部
/* rightMenu */ |
let rmf = {}; |
由于右键菜单的切换夜间模式无法与统计图交互,因而需要对前述的 JS 文件进行如下修改:
rmf.switchDarkMode = function(){ |
右键菜单 2023.1.12 更新
把右下角按钮移植入右键菜单,基本上是把 JS
函数拷贝到了 .pug
文件中,对阅读模式做了修改,阅读模式中将不开启右键菜单(否则再开启阅读模式,将会导致出现多个退出按钮)。
单多栏切换则由于窗口大小改变布局会发生改变,因而通过以下方式做到菜单项与布局匹配( copy 的右边栏的样式,改了下就可以匹配了)。
|
为适配石蒜模拟器(因为有时候想关掉它,不希望切换页面或者刷新的时候又跑出来),就在右键菜单写了开关,并修改了 hexo-sakana
插件。主要是插件过滤器的 JS
部分加了是否开启的判断,以及淡入淡出的动画。可以说这个右键菜单是我改得最深入的一次了,对于我这个没啥基础的人来说,真的见识大涨哈哈哈。
主题优化
样式表修改
字体修改
引入字体后,结合样式表选择器可以设置某一部分的字体。
透明度修改及黑夜模式适配
依旧是样式表选择器。之前我把主页的头图和背景图设成了同一幅图,但是刷新之后会有一段时间的错位,看起来很不舒服。用大佬的方法完美地解决了问题。并且,利用样式表选择器可以设置黑夜模式下的透明度和色调。
鼠标指针修改
通过样式表选择器进行修改。
github 日历
Github UI 更新频繁,本插件维护又基本处于停滞状态,因此本站不再使用。
详见:教程:hexo-githubcalendar 插件 1.0 | 小冰博客 (zfe.space)
解决 2023.12.18 的 This Serverless Function has crashed 问题
2023.7.20 api 出现问题
This Serverless Function has crashed.
Your connection is working correctly.
Vercel is working correctly.
500: INTERNAL_SERVER_ERROR
rr210 已继续跟进: github正则匹配规则更改问题,可以参考进行修改,测试有效。
解决 2023.7.20 的 This Serverless Function has crashed 问题
2023.7.20 api 出现问题
This Serverless Function has crashed.
Your connection is working correctly.
Vercel is working correctly.
500: INTERNAL_SERVER_ERROR
zkeq 已继续跟进: Github 页面改版,更新 regex 规则,可以参考进行修改,测试有效。
解决 2023.1.7 的 This Serverless Function has crashed 问题
2023.1.7 api 出现问题,改用自建的 API 也同样报错:
This Serverless Function has crashed.
Your connection is working correctly.
Vercel is working correctly.
500: INTERNAL_SERVER_ERROR
目前其他博主也遇到了这个情况 500: INTERNAL_SERVER_ERROR,可以看到 zkeq 已经针对该问题提了 PR: Github 页面改版,更新 regex 规则,可以参考进行修改,测试有效。
解决 2022.9.4 Vercel 的公共域名被墙的问题
2022.9.4 Vercel 的公共域名被墙了,解决方案有以下两种:
- 可以先使用 https://gitcalendar.zfe.space/api
- 使用 Vercel 的自定义域名绑定
具体参见 Zfour/python_github_calendar_api,关于自建 API 的步骤中,他的配图用错了,创建项目的时候,别再用 friends_link_list_api
啦!
github 卡片 ghcard
本插件是 hexo-butterfly-tag-plugins-plus
中的内容。 可以参见:Tag Plugins Plus | Akilarの糖果屋
如果自己部署了 ghcard API
但是卡片显示 Maximum retries exceeded. Please add an env variable called PAT_1 with your github token in vercel
,那可能是你的 token
没设好,或者过期了,重新生成一个就好。
解决 2022.9.4 Vercel 的公共域名被墙的问题
但因为 2022.9.4 Vercel 的公共域名被墙了,所以需要使用 Vercel 的自定义域名绑定。自己部署在 Vercel 上的方法如下 anuraghazra/github-readme-stats ,然后再绑定自定义域名
注意,在部署时,可能会报错:The value for maxDuration must be between 1 second and 10 seconds, in order to increase this limit upgrade your plan 。解决方法见 fix: decrease vercel ‘maxDuration’ to fix free plan deployment
绑定完成后,需要修改 hexo-butterfly-tag-plugins-plus
中相关文件:
// [path]\hexo-butterfly-tag-plugins-plus\lib\scripts 其他的 api 类似,使用全部替换即可 |
也可以使用我部署已经好的(不会真的有人会用我的吧??)
https://github-readme-stats.zerolacqua.top/api |
Magnet
详见:教程:hexo-magnet 插件 1.0 | 小冰博客 (zfe.space)
底部栏添加跳动的鱼背景
详见:jQuery 插件 养鱼 | Ln’s Blog (weilining.github.io)
Akilar 的标签插件 Tag Plugins Plus
本博客的样式使用情况请见:博客样式测试。详细测试例请见:Tag Plugins Plus | Akilarの糖果屋
Waline 评论
这个评论系统有后端的诶真的好棒,看的第一眼就爱上了。不过同样由于 2022.9.4 Vercel 的公共域名被墙了 需要绑定自定义域名。要测试评论可以到这里试试
(Butterfly4.6.0
) 注意,若在 _config.butterfly.yml
中开启 newest_comments
时,需要注意 serverURL
的最后不要加上 /
,否则在调用 API 获取最新评论时,会出现 CORS 问题。
友链朋友圈
配置效果见朋友圈,需要注意的是,由于 Vercel 受到影响,所以需要使用 Vercel 时,依然要绑定自定义域名。当然也可以使用其他部署方式。文档参见:https://fcircle-doc.yyyzyyyz.cn/
相关功能
关于标签插件
想要将 ,
作为参数输入,需要进行转义,使用 ‚
代替 ,
隐藏博客
使用插件 hexo-hide-posts
使用方法
安装插件
npm install hexo-hide-posts --save |
在博客的Front-matter
中加入如下参数
hidden: false |
可实现对文章的隐藏(虽然还是可以用网址访问就是了)
文字遮盖效果
使用插件 hexo-hide-posts
使用方法
安装插件
npm install hexo-spoiler --save |
站点根目录配置
spoiler: |
使用:
{% spoiler 默认配置效果 %} |
效果:
默认配置效果
跳转站内文章
通过标签插件 {% post_link %}
使用方法
跳转文章锚点
通过<a></a>
使用方法
方法一
<a href="{% post_path '近景摄影测量编程与实习' %}#影像获取">这是一个跳转</a>
此方法效果如下
方法二[这是一个跳转]({% post_path '近景摄影测量编程与实习' %}#课间实习 )
此方法目前还无法实现,还没找到问题所在。
注意:
- 如果文章中有图片,可能会出现锚点位置不准确问题,原因是图片加载成功之后会把内容高度撑开。
- 如果如果有空格,需要把空格换成连字符
-
。
可以参考以下文章
插入视频
使用 html 插入视频
使用方法
嵌入视频
{% raw %} |
<div style="position: relative; padding: 30% 45%;"> |
可以参考:
图库
通过标签插件 {% gallery %}
使用方法
{% gallery %} |
效果见可爱的水伊布
ECharts
使用插件 hexo-tag-echarts
使用方法
安装插件
npm install hexo-tag-echarts --save |
更新 node_modules\hexo-tag-echarts3\template.html
中第二行的
- <script src="https://cdn.bootcss.com/echarts/3.8.0/echarts.common.min.js"></script> |
{% echarts 400 '85%' %} |
参考:
mini-sandbox 前端代码可视化
内容很大部分参考了使用MiniSandbox前端代码可视化 | 轻笑Chuckle
使用方法
通过 CDN 单页引入 MiniSandbox
<script src="https://unpkg.com/mini-sandbox@0.3.11"></script> |
创建一个 sandbox.js
文件用于文章中的引入
new MiniSandbox({ |
并在文章末尾引入
<script src="[your_directory]/sandbox.js"></script> |
针对 MiniSandbox 的夜间模式,可以参考轻笑Chuckle的 CSS
配置
.mini-sandbox{ |
Markdown 与数学公式
多层嵌套的代码块
注意 `
的个数
-
行内代码块
`
`` ` ``
-
代码块
```c++
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, World!";
return 0;
}
```````markdown
```c++
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, World!";
return 0;
}
```
````
数学公式渲染错误
由于 Mathjax 数学公式渲染效果很迷,经常无法复现问题,有时重新部署一下全部都变了,所以 Mathjax 的内容参考价值不大!
果然还是 Katex 用起来更舒服啊,换了 Katex 之后这些问题就不存在了。解决不了问题,就把产生问题的解决掉。
一些解决方法
当然,换了 Katex 还是会有它的问题,就比如加粗。
一二**加粗**三四 |
看看效果吧
一二加粗三四
一二**.加粗三四
一二加.粗三四
一二加粗.**三四
- 所以最好还是不要在内部有字符的时候用加粗、斜体
- 更合适的方法是使用
<b>
和</b>
;<i>
和</i>
可以参见这几篇文章进行修改:
但是修改后公式中还是会出现\\
被转义成\
的问题:
CCW(c,a,b)= |
其效果为:
妥协办法也有,但是太蠢,将就用吧
CCW(c,a,b)= |
其效果为:
此外,公式块中 {y}_{t}
的_
会被渲染成斜体
$$ |
其效果为:
需要改成{y}_ {t}
$$ |
其效果为
目前测试发现和{y}_
的{}
有相关,若是\hat y_{t}
则不会出现问题。且只会在本地测试时出问题
公式块自动编号
利用 \begin{equation}
进行公式编号
使用方法
可以用以下方式对公式进行自动编号
$$ |
这是没用的:
这是用了的:
网站管理
网站验证与提交
使用 hexo-generator-sitemap
插件
使用方法
npm install hexo-generator-sitemap --save |
并在 _config.yml
文件中添加:
# hexo-generator-sitemap |
各参数可参考该插件的说明。
在各搜索引擎上验证网站,按照各搜索引擎的流程进行验证即可。之后便可以提交网站地图了,需要注意的是,在 Google Search Console
上提交网站地图是,可能会出现无法获取的情况,排除网站地图的问题后,说明可能遇到了 Bug
,状态显示是有误的。参见:Sitemap could not be read in new GSC - Google Search Central Community
网站 RSS 生成
使用 hexo-generator-feed
插件
使用方法
npm install hexo-generator-feed --save |
并在 _config.yml
文件中添加:
# hexo-generator-feed |
各参数可参考该插件的说明。
之后就可以愉快地订阅啦~