起因是觉得 Matery 主题不太符合审美, 想换成 NexT 主题, 但又想像 Matery 那样添加每次刷新都显示的动态签名, 找了一下发现在 NexT 中签名是写在 Subtitle 里的, 但网上相关的博客只有两篇, 且都过时失效了, 剩下的基本都是互相抄袭的胡说八道, 遂自己研究了一下.

纯属照着 AI 依葫芦画瓢写出的东西, 很可能含有愚蠢的实现方式或错误, 贻笑大方, 但反正最后达到我想要的效果了.

打开博客根目录下themes/next/layout/_partials/header/brand.swig, 找到以下内容:

{%- if subtitle %}
<p class="site-subtitle" itemprop="description">{{ subtitle }}</p>
{%- endif %}

将其替换成

{% if subtitle %}
<div id="randomParagraph" class="site-subtitle" itemprop="description"></div>
<script>
var paragraphs = [
"你想要的Subtitle",
"我是奶龙",
"你想要的另外的Subtitle",
"再添加一个段落以供随机选择。"
];
var randomIndex = Math.floor(Math.random() * paragraphs.length);
var selectedParagraph = paragraphs[randomIndex];
document.getElementById('randomParagraph').innerText = selectedParagraph;
</script>
{% endif %}

即可.

如果想在 Subtitle 里插入 HTML 代码 (例如使用<br>换行), 只需将

document.getElementById('randomParagraph').innerText = selectedParagraph;

中的innerText替换成innerHTML即可.

其实严格来说这么做也不是很对劲, 因为这跟根目录下_config.yml里的 Subtitle 已经没什么关系了, 不过除非你是强迫症, 否则应该没什么实际影响.

参考的两篇博客:
hexo个性化(next主题动态显示subtitle)
Hexo 个性化 - Next 主题动态显示 Subtitle


更新: 今天把 NexT 主题升级到了 8.24.0 版本, 由于新版 NexT 把所有 swig 文件都换成了 njk 格式, 原来的方法失效了.

不过新版的步骤也没什么区别, 只是修改brand.swig变成了修改brand.njk而已.

再更新:

更优雅一点的办法是把brand.njk里的这一段:

{%- if subtitle %}
<p class="site-subtitle" itemprop="description">{{ subtitle }}</p>
{%- endif %}

替换成这样:

{%- if subtitle %}
<div id="randomParagraph" class="site-subtitle" itemprop="description"></div>
<script src="/js/subtitle.js"></script>
{%- endif %}

然后在博客的/source/js/目录下新建文件subtitle.js, 内容如下:

document.addEventListener("DOMContentLoaded", function () {
var paragraphs = [
"你想要的Subtitle",
"我是奶龙",
"你想要的另外的Subtitle",
"再添加一个段落以供随机选择。"
];
var randomIndex = Math.floor(Math.random() * paragraphs.length);
var selectedParagraph = paragraphs[randomIndex];
document.getElementById('randomParagraph').innerHTML = selectedParagraph;
});

这样不会每个页面都复制一遍所有 subtitle, 效果会稍好一些.

另外前段时间发现修改node_modules里的东西实际上是很不规范的行为, 但是先不管了.

今天把马士兵的 HTML 看完了, 感觉没讲什么东西就戛然而止了.
开始看马士兵的 PHP, 目前看到了表单提交. Bootstrap 没细看, 第不知道多少次没学会正则表达式.

图书馆借了两本书, 一本是《地铁 2033》, 准备玩游戏之前先看看原著小说. 另外一本书看起来非常有意思, V.M.石察卡的《忒修斯之船》, 看了个序章准备慢慢看.

乏了, 开把以撒.

晚上陪同学把昨天没看的闪灵看了, 觉得前半段略无聊, 后半段还是有点吓人的.

本来以为这二位镜头会多点呢, 毕竟是个名场面.

有空研究一下博客能不能加上评论区或者浏览次数统计之类的, 话说真有人会看吗?

校园网又连不上 github 了, 要不等会再发布吧.

今天从头开始看马士兵的课看到了 HTML, 把 HTML 看了一半, 开了这个博客, 顺便稍微学了点 Markdown 用来写博客.
晚上约同学看《闪灵》被放鸽子, 遂生气地把她挂博客里.
明天准备继续看马士兵, 有空把博客美化一下, 事已至此, 先玩会死亡搁浅.

拔叔是真 tm 帅啊.


研究了一下 hexo 怎么传图片,写完博客准备上传发现报错

Error: Spawn failed
at ChildProcess.<anonymous> (Blog\node_modules\hexo-deployer-git\node_modules\hexo-util\lib\spawn.js:51:21)
at ChildProcess.emit (node:events:524:28)
at cp.emit (Blog\node_modules\cross-spawn\lib\enoent.js:34:29)
at ChildProcess._handle.onexit (node:internal/child_process:293:12)

查了半天最后发现是网络抽风,那没事了.
刚刚准备上传发现 GitHub 又连不上了,这校园网多少有点大奋了.

0%