Gol 2008-8-20 18:41
sablog-x 2.0 安装给附件的音乐播放器
sablog-x论坛里面以前讲过这个用播放器播放附件里面的mp3音乐的方法,我这里写一下2.0测试版的添加方法。
首先,解决上传保留文件后缀名的问题
找到admin\uploadfiles.php文件,大概在66行,将[code]if (!in_array($attach['ext'], array('gif', 'jpg', 'jpeg', 'png'))) { [/code]替换成[code]if (!in_array($attach['ext'], array('gif', 'jpg', 'jpeg', 'png','mp3'))) { [/code]然后为文章添加上播放器
找到modules\show.php文件,大概在118行,在[code]} else { // 如果非图片文件 $a_size = sizecount($attach['filesize']); $article['file'][$attach['attachmentid']]=array($attach['attachmentid'],$attach['filename'] ,$a_size,$attach['downloads']); } [/code]的前面添加上几行代码,如下[code]} elseif ($a_ext == 'mp3'){ // 是mp3 $a_size = sizecount($attach['filesize']); $article['mp3'][$attach['attachmentid']]=array($attach['attachmentid'] ,$attach['filename'],$a_path,$a_size,$attach['downloads']); [/code]然后打开你的模板文件夹,找到其中的show.php文件,在其中适当的位置,或者说你想放置MP3播放器的位置添加上以下代码[code]<!--{if $article['mp3']}--> <!--{loop $article['mp3'] $mp3}--> <div class="attach">歌曲名: $mp3[1]
<embed pluginspage="http://www.macromedia.com/go/getflashplayer" src="$options[url]images/dewplayer.swf?son={$options[url]}attachment.php?id={$mp3[0]}&&autoplay=1&&autoreplay=1" width="200" height="20" type="application/x-shockwave-flash" autostart="true"> /*这里重新修改过 */ </div> <!--{/loop}--> <!--{/if}--> [/code]如果你需要在文章列表那里显示mp3播放器,请打开modules\article.php,在190行附近的[code]} else { // 如果非图片文件 [/code]前面加上几行代码,如下[code]} elseif ($a_ext == 'mp3'){ // 是mp3 $a_size = sizecount($attach['filesize']); $article['mp3'][$attach['attachmentid']]=array($attach['attachmentid'],$attach['filename'],$a_path,$a_size,$attach['downloads']); [/code]然后继续往下,大概210行的位置,找到[code]$article['content'] = $article['description']; [/code]把它替换成[code] $attachs= unserialize(sax_stripslashes($article['attachments'])); if (is_array($attachs)) { foreach ($attachs AS $attach) { $a_path = $options['attachments_dir'].$attach['filepath']; if (file_exists($a_path)) { $a_ext = strtolower(getextension($attach['filename'])); if ($a_ext == 'mp3'){ // 是mp3 $a_size = sizecount($attach['filesize']); $article['mp3'][$attach['attachmentid']]=array($attach['attachmentid'],$attach['filename'],$a_path,$a_size,$attach['downloads']); } } } } //如果空,释放掉变量 $attachmentids=array(); foreach($attachmentids as $key => $value){ if($article['image'][$value]){ unset($article['image'][$value]); } if($article['file'][$value]){ unset($article['file'][$value]); } } $article['content'] = $article['description']; [/code]然后打开模板文件夹,打开normal.php文件,在适当的位置(你要放置播放器的地方)加上[code] <!--{if $article['mp3']}--> <!--{loop $article['mp3'] $mp3}--> <div class="attach">歌曲名: $mp3[1]
<embed pluginspage="http://www.macromedia.com/go/getflashplayer" src="$options[url]images/dewplayer.swf?son={$options[url]}attachment.php?id={$mp3[0]}" width="200" height="20" type="application/x-shockwave-flash" autostart="true"> //这里重新修改过 <!--{/loop}--> <!--{/if}--> [/code]最后将文末附件中的播放器放到博客根目录下的images目录中,就可以了。
最后介绍一下整个修改之后实现的效果
[list=1]
[*]上传mp3文件不会被改名
[*]显示文章的页面里面播放器自动播放(自动播放功能,注意看两端模板文件中代码的不同)
[*]在文章列表页面有播放器,但不自动播放
[/list]不过这样修改的代码在文章的歌曲会同时播放,所以,推荐一篇文章只放一首歌。如果按照以上过程修改出现了问题,请速速留言,我尽力帮你解决(最好能够提供你的源代码)。
PS.发现伪静态的页面使用这个有问题,发现是地址路径有问题,稍稍修改了一下,添加上$options[url]作为根目录地址,还有在模板里面,两个变量放在一起的话,必须分别用{}括起来。现在一切都正常了。