在butterfly主题添加一个副标题,并能够输出自定义的随机语录
目前已经有许多在主题中接入一言来实现输出随机语录,但是对于自定义语录库的教程,暂未看到能够明了的讲清楚如何实现这一功能的
通过参考Butterfly主题首页副标题自定义随机句子 – Eamon’s Blog和deepseek完成了此功能
# 注意在所有操作前都要确保备份
1.创建语录库
在博客的根目录下的source下(注意不是主题下的source)创建subtitle.json,在里面放句子
格式如下:
[“争知我,倚阑杆处,正恁凝愁!”,
“衣懒换,酒难赊。可怜此夕看梅花。”,
“为伊判作梦中人,索向画图清夜唤真真。”
]
2.修改pug文件
在主题的文件夹下找到layout\includes\thrid-party\subtitle.pug
划到最下面会有一个case source开头的代码下面有多个when开头的分支和default开头的分支
将default及以下的代码替换为如下的代码
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
| default script. // 获取默认内容作为后备 var defaultQuote = !{JSON.stringify(subContent[0] || '')}; // 页面加载完成后执行 document.addEventListener('DOMContentLoaded', function() { // 尝试从 subtitle.json 获取内容 fetch('/subtitle.json') .then(response => { if (!response.ok) { throw new Error('网络响应不正常'); } return response.json(); }) .then(quotes => { // 确保 quotes 是数组且有内容 if (Array.isArray(quotes) && quotes.length > 0) { // 随机选择一条语录 var randomIndex = Math.floor(Math.random() * quotes.length); displayQuote(quotes[randomIndex]); } else { // 如果 quotes 无效,使用默认内容 displayQuote(defaultQuote); } }) .catch(error => { console.error('加载自定义语录失败:', error); // 出错时使用默认内容 displayQuote(defaultQuote); }); });
// 显示语录的函数 function displayQuote(quote) { var subtitleElement = document.getElementById("subtitle"); if (subtitleElement) { subtitleElement.innerHTML = quote; } }
|
# 注意,deepseek提示这段代码需要与上面的when语句对齐,至于没有对齐是否能完成此功能,未进行测试
3.配置博客的配置文件
在博客的根目录下打开_config.yml文件,查找
subtitle:
enable: true
确保enable后的是true开启
4.关于打字机效果
在enable下面会有effect,后面也为true则为开启
但是实际实现中共没有能做到这个效果,在浏览器控制台中会有报错