本帖最后由 hhb121 于 2014-4-6 10:53 编辑
分享给大家一个简单的关于cmp播放器的应用,这里说的“修改dx3.1默认音频播放器,替换为cmp播放器。”是指通过附件上传功能上传的音频文件,程序默认的播放器样式有点怪怪的,感觉不咋好看。
播放器演示效果:http://www.wuyouzhijia.com/td-2-1-1.html
首先下载cmp播放器源码 大家自己百度吧。
我们需要修改的文件为 根目录/source/function/function_discuzcode.php 这个文件。
步骤1
首先打开 function_discuzcode.php 查找 如下代码
- <FONT size=3 face=新宋体>function parseaudio($url, $width = 400) {
- $url = addslashes($url);
- if(!in_array(strtolower(substr($url, 0, 6)), array('http:/', 'https:', 'ftp://', 'rtsp:/', 'mms://')) && !preg_match('/^static\//', $url) && !preg_match('/^data\//', $url)) {
- return dhtmlspecialchars($url);
- }</FONT>
复制代码
在这个代码上面添加:
- <FONT size=3 face=新宋体>function parsecmp($url, $width, $height, $autostart) {
- $id = 'player_'.random(3);
- $str = '<div id="'.$id.'" style="width:'.$width.'px;height:'.$height.'px;"></div>';
- $str .= '<script type="text/javascript" src="cmp/cmp.js"></script>';
- $str .= '<script type="text/javascript">';
- $str .= 'var flashvars = {';
- //不加载默认配置和列表
- $str .= 'url : "", lists : "", ';
- //皮肤
- $str .= 'skin : "skins/mini/vplayer.zip", ';
- //插件
- $str .= 'plugins : "plugins/sharing.swf", ';
- //是否自动播放
- $str .= 'auto_play : "'.$autostart.'", ';
- //单曲地址
- $str .= 'src : "'.$url.'" ';
- $str .= '};';
- $str .= 'var htm = CMP.create("cmp_'.$id.'", "100%", "100%", "cmp/cmp.swf", flashvars);';
- $str .= 'document.getElementById("'.$id.'").innerHTML = htm;';
- $str .= '</script>';
- return $str;
- }
- </FONT>
复制代码
步骤2
修改原来的parseaudio音乐标签解析函数::
- <FONT size=3 face=新宋体>function parseaudio($url, $width = 400) {
- $url = addslashes($url);
- if(!in_array(strtolower(substr($url, 0, 6)), array('http:/', 'https:', 'ftp://', 'rtsp:/', 'mms://')) && !preg_match('/^static\//', $url) && !preg_match('/^data\//', $url)) {
- return dhtmlspecialchars($url);
- }
- $ext = fileext($url);
- switch($ext) {
- case 'mp3':
- $randomid = 'mp3_'.random(3);
- return '<span id="'.$randomid.'"></span><script type="text/javascript" reload="1">$(\''.$randomid.'\').innerHTML=AC_FL_RunContent(\'FlashVars\', \'soundFile='.urlencode($url).'\', \'width\', \'290\', \'height\', \'24\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', \''.STATICURL.'image/common/player.swf\', \'quality\', \'high\', \'bgcolor\', \'#FFFFFF\', \'menu\', \'false\', \'wmode\', \'transparent\', \'allowNetworking\', \'internal\');</script>';
- case 'wma':
- case 'mid':
- case 'wav':
- return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" width="'.$width.'" height="64"><param name="invokeURLs" value="0"><param name="autostart" value="0" /><param name="url" value="'.$url.'" /><embed src="'.$url.'" autostart="0" type="application/x-mplayer2" width="'.$width.'" height="64"></embed></object>';
- case 'ra':
- case 'rm':
- case 'ram':
- $mediaid = 'media_'.random(3);
- return '<object classid="clsid:CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA" width="'.$width.'" height="32"><param name="autostart" value="0" /><param name="src" value="'.$url.'" /><param name="controls" value="controlpanel" /><param name="console" value="'.$mediaid.'_" /><embed src="'.$url.'" autostart="0" type="audio/x-pn-realaudio-plugin" controls="ControlPanel" console="'.$mediaid.'_" width="'.$width.'" height="32"></embed></object>';
- }
- }</FONT>
复制代码 替换为:
- <FONT size=3 face=新宋体>function parseaudio($url, $width = 400, $autostart = 0) {
- $autostart = $autostart !== '' ? 1 : 0;
- return parsecmp($url, $width, "240", $autostart);
- }</FONT>
复制代码 这里的高度为240px 你可以根据自己引用的播放器样式自由调整。
需要注意的是 调整 $width = 400 是无效的。
需要调整播放器的高度function_discuzcode.php中这里的400
- <FONT size=3 face=新宋体>if(strpos($msglower, '[/audio]') !== FALSE) {
- $message = preg_replace("/\[audio(=1)*\]\s*([^\[\<\r\n]+?)\s*\[\/audio\]/ies", $allowmediacode ? "parseaudio('\\2', 400)" : "bbcodeurl('\\2', '<a href="{url}" target="_blank">{url}</a>')", $message);
- }</FONT>
复制代码
大家可以自行查找。
注意其中调用路径cmp/cmp.js和cmp/cmp.swf默认是使用相对论坛根目录的相对路径,也可使用绝对路径
这里其实就是根据传入的音乐地址,以及宽高是否自动播放参数,生成一个CMP的插入脚本。
送大家一个已经修改好的懒人包,记得改后缀名,测试完整无误。这个是针对dx3.1的懒人包,其他的稍有不同,大家自行修改。
加价格了10金币。。。
|