为站点添加Aplayer全局播放器(两种布局方案)
Aplayer是一个基于JavaScript的播放器插件,而MetingJs则是基于Aplayer插件封装好的插件,开箱即用。
起初在博客中添加Aplayer播放器时,是准备把它加入到侧边栏中,但是效果并不好。播放器控件可能会有显示不完整的问题,并且在呼出与关闭侧边栏时,会有卡顿的现象。对于我现在使用的Next主题来说,将播放器置于页面左下角是比较好的选择。下面介绍两种播放器的布局方案,并提供实现全局效果(切换页面而不打断音乐播放)的方案。
添加到侧边栏
以Next主题、添加网易云音乐歌单为例。打开主题目录:themes\next\layout\_macro\sidebar.swig
找到sidebar-inner
,复制下面代码粘贴到此<div>
标签后即可。其中,data-id=””的双引号中填写歌单或者歌曲的id。(在Next 8.0之后的版本中,模板引擎发生变化,因此文件后缀由swig变为njk)
1 | <aside class="sidebar"> |
添加到Page左下角
以Next主题、添加网易云音乐歌单为例。打开主题目录:themes\next\layout\_layout.swig
,将下列代码粘贴于body或其他合适位置。其中,id=””的双引号中填写歌单或者歌曲的id。(在Next 8.0之后的版本中,模板引擎发生变化,因此文件后缀由swig变为njk)
1 | <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.css"> |
此方法同样适用于使用WordPress、Typecho等框架搭建的站点。
相关属性及其参数请看下表。
option | default | description |
---|---|---|
id | require | song id / playlist id / album id / search keyword |
server | require | music platform: netease , tencent , kugou , xiami , baidu |
type | require | song , playlist , album , search , artist |
auto | options | music link, support: netease , tencent , xiami |
fixed | false | enable fixed mode |
mini | false | enable mini mode |
autoplay | false | audio autoplay |
theme | #2980b9 | main color |
loop | all | player loop play, values: ‘all’, ‘one’, ‘none’ |
order | list | player play order, values: ‘list’, ‘random’ |
preload | auto | values: ‘none’, ‘metadata’, ‘auto’ |
volume | 0.7 | default volume, notice that player will remember user setting, default volume will not work after user set volume themselves |
mutex | true | prevent to play multiple player at the same time, pause other players when this player start play |
lrc-type | 0 | lyric type |
list-folded | false | indicate whether list should folded at first |
list-max-height | 340px | list max height |
storage-name | metingjs | localStorage key that store player setting |
使用 Pjax
实现全局播放背景音乐
我们实现全局播放时需要用到Pjax,Pjax是一个结合pushState和ajax技术的jQuery插件,使用它就可以实现异步改变URL内容和无刷新改变页面内容,使得浏览体验变得更为流畅快速。
事实上,8.0以上的Next已经自集成了Pjax,只需要在其配置文件中将Pjax项的值改为true。打开主题配置文件_config.yml,将pjax的值改为true。
1 | # Easily enable fast Ajax navigation on your website. |
否则可打开主题目录:themes\next\layout\_layout.swig
,在head中添加以下代码。
1 | <head> //粘贴到这里 |
如果主题没有集成Pjax,需要先安装Pjax,再对其进行启用,原理是一样的。
在git bash(或其他命令窗口)中执行
1 | hexo clean && hexo g && hexo s |
以查看效果。