Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

个人主页多音乐播放插件[12/8日更新]

[复制链接]
lmfx 发表于 2008-12-5 12:52:40 | 显示全部楼层 |阅读模式
UCHome插件
语言编码: GBK简体 
插件名称: 个人主页多音乐播放插件
插件作者: lmfx
适用版本:
本帖最后由 lmfx 于 2009-8-18 19:44 编辑


本插件已于12/13日更新至1.5正式版,如果您的版本是1.5正式版,请到下面地址下载新版插件:https://discuz.dismall.com/thread-1148050-1-1.html


12月6日针对RC3版本插件问题的更新说明:https://discuz.dismall.com/viewthread.php?tid=1133813&page=2#pid8938319
12月8日针对播放器问题的更新说明:
https://discuz.dismall.com/viewthread.php?tid=1133813&page=2#pid8953006


12月9日针对后台编辑用户资料丢失音乐信息的更新说明https://discuz.dismall.com/viewthread.php?tid=1133813&page=3#pid8962583

声明
1、小弟首次发插件,不懂规矩,有什么不对的地方,欢迎指正。
2、该插件借鉴了“1.5RC2个人主页音乐播放插件”及“1.5RC3个人主页播放插件样式”思路。只是原来的这个插件是但音乐播放的,考虑到用户实际使用时不太能满足需求,所以给做了个增强,弄成多音乐播放的。(PS:引号内的两篇帖子有链接,可以点击查看原帖)

第一步、修改/admin/tpl/profilefield.htm文件,为期添加新的输入类型“多行文本”
修改头部该句
  1. $_TPL['formtypes'] = array('text'=>'文本输入', 'select'=>'单选列表', 'multi'=>'多选列表');
复制代码
  1. $_TPL['formtypes'] = array('text'=>'文本输入', 'select'=>'单选列表', 'multi'=>'多选列表', 'textarea'=>'多行文本');
复制代码
查找
  1.         <script language="javascript">
  2.                 function formtypeShow(value) {
  3.                         if(value == 'text') {
  4.                                 $('tb_choice').style.display = 'none';
  5.                         } else {
  6.                                 $('tb_choice').style.display = '';        
  7.                 }
  8.         </script>
复制代码
替换为
  1.         <script language="javascript">
  2.                 function formtypeShow(value) {
  3.                         if(value == 'select') {
  4.                                 $('tb_choice').style.display = '';
  5.                                 $('tb_width').style.display = '';
  6.                         } else {
  7.                                 $('tb_choice').style.display = 'none';
  8.                                 if(value == 'textarea') {
  9.                                         $('tb_width').style.display = 'none';
  10.                                 } else {
  11.                                         $('tb_width').style.display = '';
  12.                                 }
  13.                         }               
  14.                 }
  15.         </script>
复制代码
查找
  1. <option value="text"$formtypearr[text]>文本输入框</option>
复制代码
在其下添加
  1. <option value="textarea"$formtypearr[textarea]>多行文本输入框</option>
复制代码
修改该句
  1. <tbody id="tb_choice"<!--{if $thevalue[formtype]=='text'}--> style="display:none;"<!--{/if}-->>
复制代码
  1. <tbody id="tb_choice"<!--{if $thevalue[formtype]=='text' or $thevalue[formtype]=='textarea'}--> style="display:none;"<!--{/if}-->>
复制代码
修改该句
  1.                 <tr><th>可填写的最多字符</th><td><input type="text" name="maxsize" value="$thevalue[maxsize]" size="5"> (1~255)</td></tr>
复制代码
  1.                 <tbody id="tb_width"<!--{if $thevalue[formtype]=='textarea'}--> style="display:none;"<!--{/if}-->>
  2.                 <tr><th>可填写的最多字符</th><td><input type="text" name="maxsize" value="$thevalue[maxsize]" size="5"> (1~255)</td></tr>
  3.                 </tbody>
复制代码
至此,profilefield.htm文件修改完成。这个修改主要是为UCHOME的“用户栏目”添加一个新的输入类型,让其支持多行文本输入。

第二步、修改/admin/admincp_profilefield.php文件,让用户选择“多行文本”输入类型时,写入数据库的字段为TEXT类型,默认的是varchar(255),在输入多个音乐地址的时候可能因超出最大长度导致音乐地址被截断,造成播放出错的问题。

替换
  1.                 if(empty($thevalue['fieldid'])) {
  2.                         $fieldid = inserttable('profilefield', $setarr, 1);
  3.                                 
  4.                         //更改表结构
  5.                         if(!$_SGLOBAL['db']->query("ALTER TABLE ".tname('spacefield')." ADD `field_$fieldid` varchar($setarr[maxsize]) NOT NULL default ''", 'SILENT')) {
  6.                                 $_SGLOBAL['db']->query("DELETE FROM ".tname('profilefield')." WHERE fieldid='$fieldid'");//表结构操作失败
  7.                         }
  8.                 } else {
  9.                                 //更改表结构
  10.                         if(!$_SGLOBAL['db']->query("ALTER TABLE ".tname('spacefield')." CHANGE `field_$thevalue[fieldid]` `field_$thevalue[fieldid]` varchar($setarr[maxsize]) NOT NULL default ''", 'SILENT')) {
  11.                                 cpmessage('failed_to_change_the_length_of_columns', 'admincp.php?ac=profilefield');
  12.                         }
  13.                         updatetable('profilefield', $setarr, array('fieldid'=>$thevalue['fieldid']));
  14.                 }
复制代码
  1.                 if($setarr['formtype'] == 'textarea') {
  2.                         if(empty($thevalue['fieldid'])) {
  3.                                 $fieldid = inserttable('profilefield', $setarr, 1);
  4.                                        
  5.                                 //更改表结构
  6.                                 if(!$_SGLOBAL['db']->query("ALTER TABLE ".tname('spacefield')." ADD `field_$fieldid` text NOT NULL default ''", 'SILENT')) {
  7.                                         $_SGLOBAL['db']->query("DELETE FROM ".tname('profilefield')." WHERE fieldid='$fieldid'");//表结构操作失败
  8.                                 }
  9.                         } else {
  10.                                         //更改表结构
  11.                                 if(!$_SGLOBAL['db']->query("ALTER TABLE ".tname('spacefield')." CHANGE `field_$thevalue[fieldid]` `field_$thevalue[fieldid]` text NOT NULL default ''", 'SILENT')) {
  12.                                         cpmessage('failed_to_change_the_length_of_columns', 'admincp.php?ac=profilefield');
  13.                                 }
  14.                                 updatetable('profilefield', $setarr, array('fieldid'=>$thevalue['fieldid']));
  15.                         }
  16.         } else {
  17.                 if(empty($thevalue['fieldid'])) {
  18.                         $fieldid = inserttable('profilefield', $setarr, 1);
  19.                                 
  20.                         //更改表结构
  21.                         if(!$_SGLOBAL['db']->query("ALTER TABLE ".tname('spacefield')." ADD `field_$fieldid` varchar($setarr[maxsize]) NOT NULL default ''", 'SILENT')) {
  22.                                 $_SGLOBAL['db']->query("DELETE FROM ".tname('profilefield')." WHERE fieldid='$fieldid'");//表结构操作失败
  23.                         }
  24.                 } else {
  25.                                 //更改表结构
  26.                         if(!$_SGLOBAL['db']->query("ALTER TABLE ".tname('spacefield')." CHANGE `field_$thevalue[fieldid]` `field_$thevalue[fieldid]` varchar($setarr[maxsize]) NOT NULL default ''", 'SILENT')) {
  27.                                 cpmessage('failed_to_change_the_length_of_columns', 'admincp.php?ac=profilefield');
  28.                         }
  29.                         updatetable('profilefield', $setarr, array('fieldid'=>$thevalue['fieldid']));
  30.                 }
  31.         }
复制代码
第三步、修改/source/cp_profile.php问价,用于“用户栏目”为“多行文本”类型时,在前台显示多行文本框表单
查找
  1.         } else {
  2.                 $value['formhtml'] .= "<select name="field_$fieldid">";
复制代码
在其上插入
  1.         } elseif ($value['formtype'] == 'textarea') {
  2.                 $value['formhtml'] = "<textarea name="field_$fieldid" cols="60" rows="5">".$space["field_$fieldid"]."</textarea>";
复制代码
第四步、修改用户空间模板页/template/default/space_index.htm,以下将针对1.5RC2和1.5RC3分别说明修改方法
1.5RC2下修改方法:
查找
  1.                                 <tr>
  2.                                         <th>主页:</th>
  3.                                         <td><a href="$space[domainurl]" onclick="javascript:setCopy('$space[domainurl]');return false;" class="spacelink domainurl">$space[domainurl]</a></td>
  4.                                 </tr>
复制代码
在其下添加
  1.                         <!--{if $space["field_1"]}-->
  2.                                 <tr>
  3.                                         <th>音乐:</th>
  4.                                         <td><object classid="clsid27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="240" height="20">
  5. <param name="movie" value="image/mp3player.swf?mp3=$space["field_1"]&autostart=1&bgcolor=ffffff" /><param name="quality" value="high" /><param value="transparent" name="wmode" /><embed src="image/mp3player.swf?mp3=$space["field_1"]&autostart=1&bgcolor=ffffff" width="240" height="20" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed></object></td>
  6.                                 </tr>
  7.                         <!--{/if}-->
复制代码
1.5RC3下的修改方法:
找到
  1.                                         <li>$value[title]:<!--{if $value[allowsearch]}-->
  2.                                         <a href="network.php?ac=space&field_$fieldid=$urlvalue&searchmode=1">$fieldvalue</a>
  3.                                         <!--{else}-->$fieldvalue<!--{/if}--></li>
  4.                                         <!--{/if}-->
  5.                                         <!--{/loop}-->
复制代码
在其下添加
  1.                                         <!--{if $space["field_1"]}-->
  2.                                         <li><div style="width:40px; float:left;line-height:20px;">音乐:</div><div style="width:100px;">
  3.                                           <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="240" height="20">
  4.                         <param name="movie" value="image/mp3player.swf?mp3=$space["field_1"]&autostart=1&bgcolor=ffffff" />
  5.                         <param name="quality" value="high" />
  6.                                                 <param value="transparent" name="wmode" />
  7.                                                 <embed src="image/mp3player.swf?mp3=$space["field_1"]&autostart=1&bgcolor=ffffff" width="240" height="20" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed>
  8.                                       </object>
  9.                                           </div ></li>
  10.                                         <!--{/if}-->
复制代码
第五步、后台设置
1、后台--用户栏目--添加
2、如图设置

3、更新缓存

相关说明
1、一定要下载附件并上传到自己UCHOME安装目录下的image目录
2、修改前请自行备份修改的文件,出了问题方便恢复
3、播放器的MP3参数是音乐地址列表参数,多音乐地址之间用“|”分隔(不包括引号)
4、播放器的autostart参数是自动播放参数,为0不自动播放,为1自动播放
5、播放器的bgcolor参数是播放器背景色参数,可根据模板风格自行定义颜色,如果不修改为白色
6、请在后台查看你添加的用户栏目的“栏目字段名”是否同下图红框中一致,如果不一致,请自行将以上代码中的field_1替换为你自己的“栏目字段名”

7、如果上面几个文件大家没有修改过的话,可以直接下载我提供的修改好的文件覆盖到UCHOME安装目录就好。


12月6日查明在RC3版本中仍会出现音乐地址被截断的问题,请按照以下方法修正,或下载RC3补充修正包覆盖至UCHOME安装目录:
打开/source/cp_profile.php
查找
  1. if($value['formtype'] == 'select') $value['maxsize'] = 255;
复制代码
在其下添加
  1. if($value['formtype'] == 'textarea') $value['maxsize'] = 5000;
复制代码

注:仅限RC3用户

笔者注:
1、为避免您的金币浪费,“1.5RC2插件文件”和“1.5RC3插件文件”已包含mp3player.swf文件。mp3player.rar附件只用于手动修改时下载,如果你不打算手工修改,可直接根据您的版本选择对应附件下载,不需重复购买下载mp3player.rar。

2、不管您是手动修改还是直接覆盖安装,第五步中的后台设置都是不能少的,切记。部分覆盖安装后没有生效的同学就是应为没有执行第五步中的后台设置。

RC2测试地址:http://www.53diy.com/?18
RC3测试地址:http://u.jxboss.cn/?1

近期承接某移动运营商的自由渠道服务系统制作,无力维护本插件,另因UCH推出新版本,故停止1.5版本的下载。
忙完这段时间后会制作针对2.0的插件。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
笨笨2009 发表于 2008-12-5 12:54:24 | 显示全部楼层
本帖最后由 笨笨2009 于 2008-12-5 12:58 编辑

支持。。。心情网:www.xinqingwang.com.cn 严重支持
回复

使用道具 举报

大力色狼 发表于 2008-12-5 13:08:41 | 显示全部楼层
支持分享~~~
回复

使用道具 举报

wfgo 发表于 2008-12-5 13:16:22 | 显示全部楼层
到底是RC3的还是RC2的。
回复

使用道具 举报

abcnic1 发表于 2008-12-5 13:24:20 | 显示全部楼层
支持 :
回复

使用道具 举报

 楼主| lmfx 发表于 2008-12-5 13:33:50 | 显示全部楼层
到底是RC3的还是RC2的。
wfgo 发表于 2008-12-5 13:16


RC2和RC3都支持,只是有部分地方修改不一样,帖子中有标出
回复

使用道具 举报

 楼主| lmfx 发表于 2008-12-5 13:48:25 | 显示全部楼层
已上传1.5RC2和1.5RC3修改好的文件,没修改过的朋友可以直接覆盖上传的UCHOME安装目录就好@
回复

使用道具 举报

richie-angel 发表于 2008-12-5 22:29:51 | 显示全部楼层
这么好的东西当然不能错过了
回复

使用道具 举报

ppfeel 发表于 2008-12-6 08:58:18 | 显示全部楼层
好东西顶起来!
回复

使用道具 举报

agli520 发表于 2008-12-6 09:02:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-16 10:35 , Processed in 0.031139 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表