通过 Hexo 5 注入器为主题添加新功能
Hexo 注入器
Hexo 注入器是 Hexo 5 版本加入的一项新功能,注入器可以将静态代码片段注入生成的 HTML 的 <head>
和 <body>
中。
编写注入代码,需要在博客的根目录下创建 scripts
文件夹,然后在里面任意命名创建一个 js 文件即可。
例如创建一个 /blog/scripts/example.js
,内容为:
1 |
|
上述代码会在生成的页面 </body>
注入加载 jquery.js
的代码。
register
函数可接受三个参数,第一个参数是代码片段注入的位置,接受以下值:
head_begin
: 注入在<head>
之后(默认)head_end
: 注入在</head>
之前body_begin
: 注入在<body>
之后body_end
: 注入在</body>
之前
第二个参数是注入的片段,可以是字符串,也可以是一个返回值为字符串的函数。
第三个参数是注入的页面类型,接受以下值:
default
: 注入到每个页面(默认值)home
: 只注入到主页(is_home()
为true
的页面)post
: 只注入到文章页面(is_post()
为true
的页面)page
: 只注入到独立页面(is_page()
为true
的页面)archive
: 只注入到归档页面(is_archive()
为true
的页面)category
: 只注入到分类页面(is_category()
为true
的页面)tag
: 只注入到标签页面(is_tag()
为true
的页面)- 或是其他自定义 layout 名称
实际案例
在实际使用中,建议将 js 代码独立成为 js 文件,存放在博客的 source
目录下,然后在 scripts
里通过一个包含 injector 的 js 文件统一引入。
例如创建一个 /source/js/custom.js
,里面包含初始化的代码,然后在 /scripts/injector.js
里写入:
1 |
|
以下案例都采用类似的形式,不再赘述。
APlayer 音乐播放器
1 |
|
1 |
|
参数
名称 | 默认值 | 描述 |
---|---|---|
container | document.querySelector(‘.aplayer’) | 播放器容器元素 |
fixed | false | 开启吸底模式, 详情 |
mini | false | 开启迷你模式, 详情 |
autoplay | false | 音频自动播放 |
theme | ‘#b7daff’ | 主题色 |
loop | ‘all’ | 音频循环播放, 可选值: ‘all’, ‘one’, ‘none’ |
order | ‘list’ | 音频循环顺序, 可选值: ‘list’, ‘random’ |
preload | ‘auto’ | 预加载,可选值: ‘none’, ‘metadata’, ‘auto’ |
volume | 0.7 | 默认音量,请注意播放器会记忆用户设置,用户手动设置音量后默认音量即失效 |
audio | - | 音频信息, 应该是一个对象或对象数组 |
audio.name | - | 音频名称 |
audio.artist | - | 音频艺术家 |
audio.url | - | 音频链接 |
audio.cover | - | 音频封面 |
audio.lrc | - | 详情 |
audio.theme | - | 切换到此音频时的主题色,比上面的 theme 优先级高 |
audio.type | ‘auto’ | 可选值: ‘auto’, ‘hls’, ‘normal’ 或其他自定义类型, 详情 |
customAudioType | - | 自定义类型,详情 |
mutex | true | 互斥,阻止多个播放器同时播放,当前播放器播放时暂停其他播放器 |
lrcType | 0 | 详情 |
listFolded | false | 列表默认折叠 |
listMaxHeight | - | 列表最大高度 |
storageName | ‘aplayer-setting’ | 存储播放器设置的 localStorage key |
更多关于Aplayer详见 Aplayer 文档。
DaoVoice 聊天插件
先在 https://daovoice.io 注册一个账号,按其中的引导获得 appId,然后添加如下代码:
1 |
|
1 |
|
文章时效性提示
技术性文章往往存在时效性的问题,比如某些文章会介绍一些临时解决方案,但随着时间推移可能已经失效了。我们可以通过判断发布时间(即文章设置的 date
)与当前时间的间隔,来为文章开头插入一条提示。
代码效果如下所示:
文章时效性提示
这是一篇发布于 263 天前的文章,部分信息可能已发生改变,请注意甄别。
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!