创建歌单页面
新建页面,命名为music:
1  | hexo new page music  | 
在 /Hexo/source 文件夹下会生成一个music文件夹,打开里面的index.md,修改:
1  | ---  | 
打开主题的 _config.yml文件,在menu下新建一个名为playlist的类(注意这里使用的图标是图标库中的图标。可以选择自己喜欢的图标,我这里选择的是music)。完成后如下所示:
1  | menu:  | 
使用 hexo-tag-aplayer 插件
安装
1  | npm install --save hexo-tag-aplayer  | 
依赖
- APlayer.js > 1.8.0
 - Meting.js > 1.1.1
 
使用
最新版的 hexo-tag-aplayer 已经支持了MetingJS的使用,可以直接解析网络平台的歌曲,首先要在站点配置文件中开启meting模式,添加以下代码在配置文件的最后:
1  | aplayer:  | 
复制歌单的链接,然后复制歌单的id,例如 http://music.163.com/playlist/967120942/624741809/?userid=624741809这个歌单的id就是967120942,公司名可以是tencent、netease或是其他公司,下面给出一个例子,打开source/music/index.md文件,输入:
1  | {% meting "967120942" "netease" "playlist" "theme:#FF4081" "mode:circulation" "mutex:true" "listmaxheight:340px" "preload:auto" %}  | 
演示

扩展
1  | {% aplayer title author url [picture_url, narrow, autoplay, width:xxx, lrc:xxx] %}  | 
标签参数
title: 曲目标题author: 曲目作者url: 音乐文件 URL 地址picture_url: (可选) 音乐对应的图片地址narrow: (可选)播放器袖珍风格autoplay: (可选) 自动播放,移动端浏览器暂时不支持此功能width:xxx: (可选) 播放器宽度 (默认: 100%)lrc:xxx: (可选)歌词文件 URL 地址
当开启 Hexo 的 文章资源文件夹 功能时,可以将图片、音乐文件、歌词文件放入与文章对应的资源文件夹中,然后直接引用:
1  | {% aplayer "Caffeine" "Jeff Williams" "caffeine.mp3" "picture.jpg" "lrc:caffeine.txt" %}  | 
歌词标签
除了使用标签 lrc 选项来设定歌词,你也可以直接使用 aplayerlrc 标签来直接插入歌词文本在博客中:
1  | {% aplayerlrc "title" "author" "url" "autoplay" %}  | 
播放列表
1  | {% aplayerlist %}  | 
MeingJS 支持 (3.0 新功能)
MetingJS 是基于Meting API 的 APlayer 衍生播放器,引入 MetingJS 后,播放器将支持对于 QQ音乐、网易云音乐、虾米、酷狗、百度等平台的音乐播放。
如果想在本插件中使用 MetingJS,请在 Hexo 配置文件 _config.yml 中设置:
1  | aplayer:  | 
接着就可以通过 
     在文章中使用 MetingJS 播放器了:
1  | <!-- 简单示例 (id, server, type) -->  | 
有关 
     的选项列表如下:
| 选项 | 默认值 | 描述 | 
|---|---|---|
| id | 必须值 | 歌曲 id / 播放列表 id / 相册 id / 搜索关键字 | 
| server | 必须值 | 音乐平台: netease, tencent, kugou, xiami, baidu | 
| type | 必须值 | song, playlist, album, search, artist | 
| fixed | false | 
开启固定模式 | 
| mini | false | 
开启迷你模式 | 
| loop | all | 
列表循环模式:all, one,none | 
| order | list | 
列表播放模式: list, random | 
| volume | 0.7 | 播放器音量 | 
| lrctype | 0 | 歌词格式类型 | 
| listfolded | false | 
指定音乐播放列表是否折叠 | 
| storagename | metingjs | 
LocalStorage 中存储播放器设定的键名 | 
| autoplay | true | 
自动播放,移动端浏览器暂时不支持此功能 | 
| mutex | true | 
该选项开启时,如果同页面有其他 aplayer 播放,该播放器会暂停 | 
| listmaxheight | 340px | 
播放列表的最大长度 | 
| preload | auto | 
音乐文件预载入模式,可选项: none, metadata, auto | 
| theme | #ad7a86 | 
播放器风格色彩设置 | 
关于如何设置自建的 Meting API 服务器地址,以及其他 MetingJS 配置,请参考章节自定义配置
PJAX 兼容
若在 Hexo 中使用了 PJAX,可能需要自己手动清理 APlayer 全局实例:
1  | $(document).on('pjax:start', function () {  | 
自定义配置(3.0 新功能)
现在你可以在 Hexo 配置文件 _config.yml 中配置本插件:
1  | aplayer:  | 
故障排除
标签参数空格问题
在 Hexo 标签中,用户可能无法直接在标签参数中加入空格
如果遇到这类问题,请直接将参数用双引号括起来使用,如下所示:
1  | {% aplayer "Caffeine" "Jeff Williams" "caffeine.mp3" "autoplay" "width:70%" "lrc:caffeine.txt" %}  | 
重复载入 Aplayer.js 资源脚本问题
本插件通过 after_render:html过滤器 , 将 APlayer.js 和 Meting.js 插入到使用了本插件标签 的 HTML 文件中:
1  | <html>  | 
但是 after_render:html 在一些情形下可能无法被正常触发:
- Does not work with hexo-renderer-jade
 after_render:html似乎在 Hexo 服务器模式默认配置中无法被调用 (hexo server), 遇到这种情况用户可能需要使用hexo-server的静态文件解析模式 (hexo server -s) .
如果在博客生成过程中,插件发现 after_render:html 没有被调用,那么插件将会通过 after_post_render 过滤器来植入脚本。但是使用 after_post_render 会有重复载入 APlayer.js 的情况(例如当一个页面中存在多篇博客时),以及一些非文章页面将无法使用本插件。
如果想完全解决这个问题,用户可能需要自己在主题文件中手动加入 Aplayer.js 与 Meting.js,同时关闭插件的自动脚本插入功能:
1  | aplayer:  | 





