PHPCMS增加音乐播放模块
  • 分类:经验分享
  • 发表:2014-12-01
  • 围观(9,821)
  • 评论(0)

1、新建模型,模型名称“音乐模型”,数据表“music”。
在字段管理里,新建歌唱家简介、音乐文件字段,修改作者字段名为歌唱家,当然,你也可以增加更多的字段。
歌唱家简介为文本类型,音乐文件字段为多文件上传型。限制文件个数为1,文件类型为mp3,wma等。

这里的数据表根据你自己的需要,也可以按Music走,我后边的例子全是music。

2、新建栏目,可以以该栏目新创建list和Show页面的模板,我做的是list_music.html和show_music.html。

3、在自己的JS库里增加一个函数

//全选反选
function SelectAll(inputname) {
var checkboxs=document.getElementsByName(inputname);
for (var i=0;i<checkboxs.length;i++) {
var e=checkboxs[i];
e.checked=!e.checked;
}
}

4、新建一个音乐播放页面,这里,推荐下面的播放器,下面的实例也以这款播放器为例。

具体的栏目不做说明。在实例中,我将播放器原来的script.js文件内容内置到播放页面中。

在实际中要修改播放数据位置的代码,修改后的内容为:

{loop $music $m}
<?php
$filename = preg_replace("/<a href='(.*)'>(.*)<\/a>/iUs",'\\2',$m);
$fileurl = preg_replace("/<a href='(.*)'(.*)<\/a>/iUs",'\\1',$m);
?>
{
title: '{$title}',
artist: '{$author}',
album: '{$filename}',
{if $thumb}cover: '{$thumb}',{else}cover: '{IMG_PATH}fxw/musicnull.jpg',{/if}
mp3: '{$fileurl}',
ogg: ''
},
{/loop}

功能不再说明,,看懂这个播放器就很简单了,,,

上述的{IMG_PATH}fxw/musicnull.jpg,是当没有题图的时候,调用一个默认的题图。

至此,如果单播放的话,这就完了,,

如果要播放列表的话,按以下修改,,,

先说下思路,主要就是通过表单方式,把要播放的项目ID通过POST方式传递到播放页面,然后播放页面再通过Get来读取项目内容,进而完成列表播放操作。

5、先创建一个列表播放的页面,打开\phpcms\modules\content\index.php,在后面加一个函数,内容为:

//音乐列表页
public function musiclist() {
include template('content','show_music');
}

就这么简单,,,,,不过,有了这么个修改,以后升级的时候要注意了,,,

6、制作表单了,打开list_music.html,在内容列表合适位置加上

<form action="{APP_PATH}index.php?m=content&c=index&a=musiclist" method="post" target="_blank">

</form>

这个功能不解释了,

在合适位置前加上

<input name="listid[]" type="checkbox" value="{$r[id]}" />

下面是提交和全选的代码

<div class="musiclistbutton"><input name="" type="button" onclick="SelectAll('listid[]')" value="全选/反选" />
<input name="" type="submit" value="开始连播" /></div>

这样做这一步就完了,当然,你也可以在一个页面创建多个,分块分区,或者别的什么效果都行,,,

7、因为我们上面调用的模板还是show_music.html,所以,这个页面就要再做一些修改了。

将第4步的代码修改为:

{if $_GET["a"] == "musiclist"}
<?php
foreach($_POST["listid"] AS $m){
if ($listid){
$listid = $listid . "," .$m;
}else{
$listid=$m;
}
}
$listsql="SELECT * FROM v9_music_data WHERE id IN(". $listid . ")ORDER BY id ASC";
?>
{pc:get sql="$listsql"}
{loop $data $l}
{php eval("\$file=" . $l[music] . ";");}
{php $listsql_title = "SELECT title,thumb FROM v9_music WHERE id=". $l['id'];}
{pc:get sql="$listsql_title"}
{loop $data $mt}
{
title: '{$mt["title"]}',
artist: '{$l["author"]}',
album: '{$file[0]['filename']}',
{if $mt["thumb"]}cover: '{$mt["thumb"]}',{else}cover: '{IMG_PATH}fxw/musicnull.jpg',{/if}
mp3: '{$file[0]['fileurl']}',
ogg: ''
},
{/loop}
{/pc}
{/loop}
{/pc}
{else}
{loop $music $m}
<?php
$filename = preg_replace("/<a href='(.*)'>(.*)<\/a>/iUs",'\\2',$m);
$fileurl = preg_replace("/<a href='(.*)'(.*)<\/a>/iUs",'\\1',$m);
?>
{
title: '{$title}',
artist: '{$author}',
album: '{$filename}',
{if $thumb}cover: '{$thumb}',{else}cover: '{IMG_PATH}fxw/musicnull.jpg',{/if}
mp3: '{$fileurl}',
ogg: ''
},
{/loop}
{/if}

代码为灰色的是第4步中的内容,其余的为新加内容。代码不一一解释,,,

到这里,就完成了。

可以实现连播,单个播放,,然后,音乐模型就这些内容吧,,,

收藏、歌词这些功能,没想过,,,,

 

播放器文件

Top