音乐(hexo-tag-aplayer)

音乐界面使用了插件 hexo-tag-aplayer

hexo-tag-aplayer下载

1
npm install --save hexo-tag-aplayer

hexo-tag-aplayer说明

aplayer似乎适用于大多为ejs创造的主题,butterfly主题使用的是pug,使用aplayer不能显示。解决方法如下:
1.hexo安装目录下执行npm install aplayer
2.主题目录\layout\includes新建aplayer.pug文件,内容如下
3.重新生成网站

aplayer.pug
1
2
3
link(rel="stylesheet" type='text/css', href="https://cdn.jsdelivr.net/npm/aplayer@1.10/dist/APlayer.min.css")
script(type='text/javascript', src="https://cdn.jsdelivr.net/npm/aplayer@1.10/dist/APlayer.min.js")
script(type='text/javascript', src="https://cdn.jsdelivr.net/npm/meting@1.2/dist/Meting.min.js")

hexo-tag-aplayer基本使用

1
{% aplayer title author url [picture_url narrow autoplay width:xxx lrc:xxx] %}

示例

1
{% aplayer "Windy Hill" "羽肿" "https://xxx.mp3" "https://p2.music.126.net/R5wdneWJADdilEDtqBev-w==/109951169463411528.jpg" "autoplay" %}

其会被插件渲染为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

<div id="aplayer-AouJbvjY" class="aplayer aplayer-tag-marker" style="margin-bottom: 20px;">
<pre class="aplayer-lrc-content"></pre>
</div>
<script>
var ap = new APlayer({
element: document.getElementById("aplayer-AouJbvjY"),
narrow: false,
autoplay: true,
showlrc: false,
music: {
title: "Windy Hill",
author: "羽肿",
url: "https://xxx.mp3",
pic: "https://p2.music.126.net/R5wdneWJADdilEDtqBev-w==/109951169463411528.jpg",
lrc: ""
}
});
window.aplayers || (window.aplayers = []);
window.aplayers.push(ap);
</script>


        

当开启Hexo文章资源文件夹 功能时,可以将图片、音乐文件、歌词文件放入与文章对应的资源文件夹中,然后直接引用。

1
{% aplayer "title" "author1 author2" "title.mp3" "picture.jpg" "lrc:title.txt" %}

示例

1
{% aplayer "城南花已开" "三亩地" "城南花已开.mp3" "/img/avatar003.jpg" "lrc:城南花已开.lrc" %}
[00:00.00]城南花已开 - 三亩地 
[00:01.00]该歌曲为纯音乐请欣赏

Meing JS支持(3.0 新功能)

但是3.0新版本的Aplayer已经支持MeingJS了,MetingJS是基于Meting API 的 APlayer 衍生播放器,引入 MetingJS 后,播放器将支持对于 QQ音乐、网易云音乐、虾米、酷狗、百度等平台的音乐播放。

修改Hexo配置文件_config.yml

1
2
aplayer:
meting: true

接着就可以通过 {% meting ...%} 在文章中使用 MetingJS 播放器了:

简单示例(id,server,type)
1
{% meting "427606780" "netease" "song" %}

标签被渲染为

1
2
3
4

<div id="aplayer-WIYkahGD" class="aplayer aplayer-tag-marker meting-tag-marker"
data-id="427606780" data-server="netease" data-type="song" data-mode="circulation" data-autoplay="false" data-mutex="true" data-listmaxheight="340px" data-preload="auto" data-theme="#ad7a86"
></div>

如果不想使用插件,就需要在markdown中用html的格式书写,同时把主题配置文件中的aplayerInject开启

进阶示例
1
{% meting "427606780" "netease" "song" "autoplay" "mutex:false" "preload:none" "theme:#00e500"%}

标签会被渲染为

1
2
3
4

<div id="aplayer-TzddVYba" class="aplayer aplayer-tag-marker meting-tag-marker"
data-id="427606780" data-server="netease" data-type="song" data-mode="circulation" data-autoplay="true" data-mutex="false" data-listmaxheight="340px" data-preload="none" data-theme="#00e500"
></div>

有关 {% meting %} 的选项列表如下:

选项 默认值 描述
id 必须值 歌曲 id / 播放列表 id / 相册 id / 搜索关键字
server 必须值 音乐平台: netease ,tencent, kugou, xiami, baidu
type 必须值 song, playlist, album, search, artist
fixed false 开启固定模式,加入fixed开启固定(左下角)用于全局
mini false 开启迷你模式,加入mini开启,只有小图标呈现
loop all 列表循环模式:all, one,none
order list 列表播放模式: list, random
volume 0.7 播放器音量
lrctype 0 歌词格式类型,好像不为0会没有歌词
listfolded false 指定音乐播放列表是否折叠
storagename metingjs LocalStorage 中存储播放器设定的键名
autoplay true 自动播放,移动端浏览器暂时不支持此功能,加autoplay表示自动播放
mutex true 该选项开启时,如果同页面有其他 aplayer 播放,点击播放,其他播放器会暂停
listmaxheight 340px 播放列表的最大长度
preload auto 音乐文件预载入模式(进度条),可选项: none, metadata, auto
theme #ad7a86 播放器风格色彩设置

添加全局吸底Aplayer

简述

如果想使用aplayer,很多人都会推荐安装 hexo-tag-aplayer 这款插件。这款插件通过 Hexo 独有的标签外挂,我们可以很方便的写入一些参数,插件就会帮我们生成对应的 html。如果你只是使用一些简单的功能,其实无需使用到这个插件,只需以 html 格式书写就行,不用插件去转换。

For example:
如果使用插件,在 markdown 中要这样写

1
{% meting "000PeZCQ1i4XVs" "tencent" "artist" "theme:#3F51B5" "mutex:true" "preload:auto" %}

会被插件渲染为

1
<div id="aplayer-uxAIfEUs" class="aplayer aplayer-tag-marker meting-tag-marker" data-id="000PeZCQ1i4XVs" data-server="tencent" data-type="artist" data-mode="circulation" data-autoplay="false" data-mutex="true" data-listmaxheight="340px" data-preload="auto" data-theme="#3F51B5"></div>

如果我们不想使用插件,就需要在markdown中用html的格式书写,同时把主题配置文件中的aplayerInject开启

1
<div class="aplayer" data-id="000PeZCQ1i4XVs" data-server="tencent" data-type="artist" data-mutex="true" data-preload="auto" data-theme="#3F51B5"></div>

关闭asset_inject

由于需要全局都插入 aplayer 和 meting 资源,为了防止插入重复的资源,需要把 asset_inject 设为 false

修改Hexo配置文件

1
2
3
aplayer:
meting: true
asset_inject: false

开启主题的aplayerInject

修改主题配置文件

1
2
3
4
# Inject the css and script (aplayer/meting)
aplayerInject:
enable: true
per_page: true

插入 Aplayer html

aplayer代码 插入到主题配置文件的 inject.bottom

1
2
3
4
inject:
head:
bottom:
- <div class="aplayer no-destroy" data-id="8332009741" data-server="tencent" data-type="playlist" data-fixed="true" data-mini="true" data-autoplay="false" > </div>

参数使用同上面aplayer标签参数,只是前面加上data-即可

运行 Hexo 就可以看到网页左下角出现了 Aplayer

最后,如果你想切换页面时,音乐不会中断。设置主题配置文件pjax: true

评论

支持双评论显示,只需要配置两个评论(第一个为默认显示)

1
2
3
4
5
6
7
8
9
10
comments:
# Up to two comments system, the first will be shown as default
# Choose: Disqus/Disqusjs/Livere/Gitalk/Valine/Waline/Utterances/Facebook Comments/Twikoo
use: Valine,Disqus
text: true # Display the comment name next to the button
# lazyload: The comment system will be load when comment element enters the browser's viewport.
# If you set it to true, the comment count will be invalid
lazyload: true
count: true # Display comment count in top_img
card_post_count: false # Display comment count in Home Page
参数 解释
use 使用的评论(请注意,最多支持两个,如果不需要请留空)
注意:双评论不能是 Disqus 和 Disqusjs 一起,由于其共用同一个 ID,会出错
text 是否显示评论服务商的名字
lazyload 是否为评论开启lazyload,开启后,只有滚动到评论位置时才会加载评论所需要的资源(开启 lazyload 后,评论数将不显示)
count 是否在文章顶部显示评论数
livere、Giscus 和 utterances 不支持评论数显示
card_post_count 是否在首页文章卡片显示评论数
gitalk、livere 、Giscus 和 utterances 不支持评论数显示

Twikoo是一个简洁、安全、无后端的静态网站评论系统,基于腾讯云开发。

具体如何配置评论,请查看Twikoo文档

只需要把获取到的 环境ID (envId) 填写到配置上去就行

修改主题配置文件

1
2
3
4
5
twikoo:
envId:
region:
visitor: false
option:
参数 解释
envId 环境 ID(配置好的评论系统网址)这里我用的是Vercel部署
region 环境地域,默认为 ap-shanghai,如果您的环境地域不是上海,需传此参数
visitor 是否显示文章阅读数
option 可选配置

开启 visitor 后,文章页的访问人数将改为Twikoo提供,而不是 不蒜子

Twikoo

Waline是一款从 Valine 衍生的带后端评论系统。可以将 Waline 等价成 With backend Valine。

具体配置参考waline文档,这里我用的是Vercel部署

修改主题配置文件

1
2
3
4
5
waline:
serverURL: # Waline server address url
bg: # waline background
pageview: false
option:

开启 visitor 后,文章页的访问人数将改为Waline提供,而不是 不蒜子


Waline

注册来必力,配置你自己的来必力设置,然后在Butterfly里开启它。

修改主题配置文件

1
2
livere:
uid:

livere.id

hexo-douban

hexo-douban一个在 Hexo 页面中嵌入豆瓣个人主页的小插件。

安装

node 版本要求 >= v18

1
npm install hexo-douban --save

配置

将配置文件写入站点的配置文件 _config.yml 里(不是主题的配置文件)。

精简配置

1
2
3
4
5
6
7
8
9
10
douban:
id:
book:
title: "This is my book title"
movie:
title: "This is my movie title"
game:
title: "This is my game title"
song:
title: "This is my song title"

完整配置

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
douban:
id:
builtin: true
dynamic: false
item_per_page: 10
meta_max_line: 4
customize_layout: page
book:
path: books/index.html
title: 知识海洋
quote: 你迷茫的原因在于读书太少而想的太多
actions:
- do
- wish
- collect
option:
movie:
path: movies/index.html
title: 那些人,那些事
quote: 总有不期而遇的温暖
actions:
- do
- wish
- collect
option:
game:
path: games/index.html
title: Games
quote: 正当的游玩,是辛苦的慰安,是工作的预备
actions:
- do
- wish
- collect
option:
song:
path: songs/index.html
title: 旋律
quote: 音乐是灵魂的语言
actions:
- do
- wish
- collect
option:
options descriptions
id 豆瓣ID。
builtin 是否将hexo douban命令默认嵌入进hexo g、hexo s,使其自动执行hexo douban命令。默认关闭。
dynamic 豆瓣页面是否在访问时实时请求接口,默认为false,推送时更新。
设置为true页面会在访问页面时更新豆瓣信息,接口挂了,页面自然也没有了
item_per_page 每页展示的条目数,默认10。
meta_max_line 每个条目展示的详细信息的最大行数,超过该行数则会以”…”省略,默认4。
customize_layout 自定义布局文件。默认值为page。无特别需要,留空即可。若配置为abcd,则表示指定//theme/hexo-theme/layout/abcd.ejs文件渲染豆瓣页面。
path 生成页面后的路径,默认生成在//blog-root/books/index.html 等下面。如需自定义路径,则可以修改这里。
title 该页面的标题。
quote 写在页面开头的一段话,支持html语法,可以为空。
actions 一个字符串列表,表示生成的页面中的“已X” “想X” “X过” 的标签配置,默认会自动聚焦在第一个标签。可选项为: do,wish,collect
option 该页面额外的Front-matter配置,参考Hexo文档。无特别需要,留空即可。

使用

展示帮助文档

1
hexo douban -h

主动生成豆瓣页面

1
hexo douban

通常大家都喜欢用hexo d来作为hexo deploy命令的简化,但是当安装了hexo douban之后,就不能用hexo d了,因为hexo doubanhexo deploy的前缀都是hexo d

升级

可以用下面的方法来更新:

  1. 修改package.jsonhexo-douban的版本号至最新。(my blog version:2.3.5)
  2. 重新安装最新版本npm install hexo-douban --save或者使用npm install hexo-douban --update --save直接更新。

菜单

配置成功后,即可在相应的path界面查看结果。
如果上面的显示没有问题就可以在主题的配置文件_config.yml里添加如下配置来为这些页面添加菜单链接。

1
2
3
4
5
6
7
menu:
Home: /
Archives: /archives
Books: /books #This is your books page
Movies: /movies #This is your movies page
Games: /games #This is your games page
Songs: /songs #This is your songs page

在线聊天

从3.0开始,Butterfly主题内置了多种在线聊天工具。可以选择开启一种,方便与访客的交流。

这些工具都提供了一个按钮可以打开/关闭聊天窗口。
主题也提供了一个集合主题特色的按钮来替换这些工具本身的按钮,这个聊天按钮将会出现在右下角里。
只需要把chat_btn打开就行。

修改主题配置文件

1
2
3
# Chat Button [recommend]
# It will create a button in the bottom right corner of website, and hide the origin button
chat_btn: true

将聊天按钮集成在博客中

为了不影响访客的体验,主题提供一个chat_hide_show配置。
设为true后,使用工具提供的按钮时,只有向上滚动才会显示聊天按钮,向下滚动时会隐藏按钮。

修改主题配置文件

1
2
# The origin chat button is displayed when scrolling up, and the button is hidden when scrolling down
chat_hide_show: true

如果使用工具自带的聊天按钮,按钮位置可能会遮挡右下角图标,请配置rightside-bottom调正右下角图标位置

QQ邮箱不可以


配置chatra,需要知道Public key
打开chatra并注册账号。
查看Public key

修改主题配置文件

1
2
3
4
5
# chatra
# https://chatra.io/
chatra:
enable: true
id: xxxxxxxx

chatra的样式你可以Chat Widget自行配置
聊天界面配置

配置tidio,需要知道Public key
打开tidio并注册账号。【科学上网才可以!】
你可以在设置 > Project data中找到Public key
查看Public key

修改主题配置文件

1
2
3
4
5
# tidio
# https://www.tidio.com/
tidio:
enable: true
public_key: XXXX

daovoice

daovoice不维护了,注册不了

crisp

crisp限制中国用户
crisp限制中国用户
crisp给出的解释

messenger

Facebook 旗下的聊天服务messenger
无法再使用聊天插件的任何功能

待试用

开源即时聊天软件ChatWoot【问题:Heroku账号注册不了】
支持独立部署的个人云社交媒体聊天服务VoceChat