用帝国CMS做开发的小伙伴可能会遇到使用downpath也就是帝国CMS自带下载字段做模版的情况。这个字段的好处是完美原生匹配帝国的各个功能比如统计下载次数,加密下载链接,原生的扣点和权限系统。
但是在开发或者使用中,会面临一个信息里多个下载链接,每个链接会有自定义选项的情况,比如 下载地址1 网盘密码是1234,下载地址2 网盘密码是5678的问题。或者每个下载地址里面的版本或者软件大小不一样,默认的下载字段是不支持的。这就需要对下载字段进行响应的改造,增加需要的自定义选项了。
我简单做个截图,改造实例一:
文件位置: e/class/functions.php
原函数:
function ReturnDownpath($downname,$downpath,$delpathid,$pathid,$downuser,$fen,$thedownqz,$add,$foruser,$downurl,$down=0){修改后的完整函数:
function ReturnDownpath($downname,$downpath,$delpathid,$pathid,$downuser,$fen,$thedownqz,$add,$foruser,$downurl,$down=0,$downsize='',$downpwd=''){
$f_exp="::::::";
$r_exp="\r\n";
$returnstr="";
$downurl=str_replace($f_exp,"",$downurl);
$downurl=str_replace($r_exp,"",$downurl);
//增加软件
if(empty($down))
{
for($i=0;$i<count($downname);$i++)
{
//替换非法字符
$name=str_replace($f_exp,"",$downname[$i]);
$name=str_replace($r_exp,"",$name);
$path=str_replace($f_exp,"",$downpath[$i]);
$path=str_replace($r_exp,"",$path);
//批量更换权限
if($add[doforuser])
{
if(empty($foruser))
{
$foruser=0;
}
$fuser=$foruser;
}
else
{
if(empty($downuser[$i]))
{
$fuser=0;
}
else
{
$fuser=$downuser[$i];
}
}
//批量更新点数
if($add[dodownfen])
{
if(empty($add[downfen]))
{
$add[downfen]=0;
}
$ffen=$add[downfen];
}
else
{
if(empty($fen[$i]))
{
$ffen=0;
}
else
{
$ffen=$fen[$i];
}
}
$downqz=$thedownqz[$i];
// 新增:处理大小和网盘密码字段
$size_val = isset($downsize[$i]) ? str_replace($f_exp,"",str_replace($r_exp,"",$downsize[$i])) : '';
$pwd_val = isset($downpwd[$i]) ? str_replace($f_exp,"",str_replace($r_exp,"",$downpwd[$i])) : '';
if($path&&$name)
{$returnstr.=$name.$f_exp.$downurl.$path.$f_exp.$fuser.$f_exp.$ffen.$f_exp.$downqz.$f_exp.$size_val.$f_exp.$pwd_val.$r_exp;}
}
}
//修改软件
else
{
for($i=0;$i<count($downname);$i++)
{
//删除下载地址
$del=0;
for($j=0;$j<count($delpathid);$j++)
{
if($delpathid[$j]==$pathid[$i])
{$del=1;}
}
if($del)
{continue;}
//替换非法字符
$name=str_replace($f_exp,"",$downname[$i]);
$name=str_replace($r_exp,"",$name);
$path=str_replace($f_exp,"",$downpath[$i]);
$path=str_replace($r_exp,"",$path);
//批量更换权限
if($add[doforuser])
{
if(empty($foruser))
{
$foruser=0;
}
$fuser=$foruser;
}
else
{
if(empty($downuser[$i]))
{
$fuser=0;
}
else
{
$fuser=$downuser[$i];
}
}
//批量更新点数
if($add[dodownfen])
{
if(empty($add[downfen]))
{
$add[downfen]=0;
}
$ffen=$add[downfen];
}
else
{
if(empty($fen[$i]))
{
$ffen=0;
}
else
{
$ffen=$fen[$i];
}
}
$downqz=$thedownqz[$i];
// 新增:处理大小和网盘密码字段
$size_val = isset($downsize[$i]) ? str_replace($f_exp,"",str_replace($r_exp,"",$downsize[$i])) : '';
$pwd_val = isset($downpwd[$i]) ? str_replace($f_exp,"",str_replace($r_exp,"",$downpwd[$i])) : '';
if($path&&$name)
{$returnstr.=$name.$f_exp.$downurl.$path.$f_exp.$fuser.$f_exp.$ffen.$f_exp.$downqz.$f_exp.$size_val.$f_exp.$pwd_val.$r_exp;}
}
}
//去掉最后的字符
$returnstr=substr($returnstr,0,strlen($returnstr)-2);
return $returnstr;
}在同一个 functions.php 文件中,找到 ReturnAddF 函数中处理 downpath 字段的两处代码:
第1处(增加信息,约在第 1600 行附近):
elseif($f=="downpath")//下载地址
{
$value=ReturnDownpath($add['downname'],$add['downpath'],$add['delpathid'],$add['pathid'],$add['downuser'],$add['fen'],$add['thedownqz'],$add,$add['foruser'],$add['downurl_qz'],0);
}修改为:
elseif($f=="downpath")//下载地址
{
$value=ReturnDownpath($add['downname'],$add['downpath'],$add['delpathid'],$add['pathid'],$add['downuser'],$add['fen'],$add['thedownqz'],$add,$add['foruser'],$add['downurl_qz'],0,$add['downsize'],$add['downpwd']);
}第2处(修改信息,约在第 1650 行附近):
elseif($f=="downpath")//下载地址
{
$value=ReturnDownpath($add['downname'],$add['downpath'],$add['delpathid'],$add['pathid'],$add['downuser'],$add['fen'],$add['thedownqz'],$add,$add['foruser'],$add['downurl_qz'],1);
}修改为:
elseif($f=="downpath")//下载地址
{
$value=ReturnDownpath($add['downname'],$add['downpath'],$add['delpathid'],$add['pathid'],$add['downuser'],$add['fen'],$add['thedownqz'],$add,$add['foruser'],$add['downurl_qz'],1,$add['downsize'],$add['downpwd']);
}在同一个 functions.php 文件中,找到 RepDownOnlinePathTemp 函数,增加新字段的模板变量替换:
原函数:
function RepDownOnlinePathTemp($add,$downsofttemp,$pj,$showdown_r,$ecms){
global $public_r,$level_r,$fun_r;
if($ecms==0)//下载
{
$downurl=$public_r[newsurl]."e/DownSys/DownSoft/?classid=$add[classid]&id=$add[id]&pathid=$pj";
}
else//在线
{
$downurl=$public_r[newsurl]."e/DownSys/play/?classid=$add[classid]&id=$add[id]&pathid=$pj";
}
$downsofttemp=str_replace('[!--down.url--]',$downurl,$downsofttemp);
$downsofttemp=str_replace('[!--down.name--]',$showdown_r[0],$downsofttemp);
$downsofttemp=str_replace('[!--pathid--]',$pj,$downsofttemp);
$downsofttemp=str_replace('[!--fen--]',$showdown_r[3],$downsofttemp);
$group=$showdown_r[2]?$level_r[$showdown_r[2]][groupname]:$fun_r['hguest'];
$downsofttemp=str_replace('[!--group--]',$group,$downsofttemp);
if(strstr($downsofttemp,'[!--true.down.url--]'))
{
$durl=stripSlashes($showdown_r[1]);
$durlr=ReturnDownQzPath($durl,$showdown_r[4]);
$durl=$durlr['repath'];
$downsofttemp=str_replace('[!--true.down.url--]',$durl,$downsofttemp);
}
return $downsofttemp;
}修改为:
function RepDownOnlinePathTemp($add,$downsofttemp,$pj,$showdown_r,$ecms){
global $public_r,$level_r,$fun_r;
if($ecms==0)//下载
{
$downurl=$public_r[newsurl]."e/DownSys/DownSoft/?classid=$add[classid]&id=$add[id]&pathid=$pj";
}
else//在线
{
$downurl=$public_r[newsurl]."e/DownSys/play/?classid=$add[classid]&id=$add[id]&pathid=$pj";
}
$downsofttemp=str_replace('[!--down.url--]',$downurl,$downsofttemp);
$downsofttemp=str_replace('[!--down.name--]',$showdown_r[0],$downsofttemp);
$downsofttemp=str_replace('[!--pathid--]',$pj,$downsofttemp);
$downsofttemp=str_replace('[!--fen--]',$showdown_r[3],$downsofttemp);
$group=$showdown_r[2]?$level_r[$showdown_r[2]][groupname]:$fun_r['hguest'];
$downsofttemp=str_replace('[!--group--]',$group,$downsofttemp);
// 新增:大小和网盘密码字段
$downsize = isset($showdown_r[5]) ? $showdown_r[5] : '';
$downpwd = isset($showdown_r[6]) ? $showdown_r[6] : '';
$downsofttemp=str_replace('[!--down.size--]',$downsize,$downsofttemp);
$downsofttemp=str_replace('[!--down.pwd--]',$downpwd,$downsofttemp);
if(strstr($downsofttemp,'[!--true.down.url--]'))
{
$durl=stripSlashes($showdown_r[1]);
$durlr=ReturnDownQzPath($durl,$showdown_r[4]);
$durl=$durlr['repath'];
$downsofttemp=str_replace('[!--true.down.url--]',$durl,$downsofttemp);
}
return $downsofttemp;
}在同一个文件中,找到 GetDownloadPage 函数,增加新字段的模板变量:
在函数中增加以下两行(放在其他 str_replace 附近):
$temptext=str_replace("[!--down.size--]","<?=\$downsize?>",$temptext);
$temptext=str_replace("[!--down.pwd--]","<?=\$downpwd?>",$temptext);<script>
function doadd()
{
var i;
var str="";
var oldi=0;
var j=0;
oldi=parseInt(document.add.editnum.value);
for(i=1;i<=document.add.downnum.value;i++)
{
j=i+oldi;
str=str+"<tr>"+
"<td width='6%'><div align=center>"+j+"</div></td>"+
"<td width='14%'><div align=left><input name=downname[] type=text id=downname[] value='下载地址"+j+"' size=14></div></td>"+
"<td width='28%'><input name=downpath[] type=text size=28 id=downpath"+j+" ondblclick=SpOpenChFile(0,'downpath"+j+"')><select name=thedownqz[]><option value=''>--地址前缀--</option><?=$newdownqz?></select></td>"+
"<td width='10%'><div align=center><select name=downuser[] id=select><option value=0>游客</option><?=$ygroup?></select></div></td>"+
"<td width='7%'><div align=center><input name=fen[] type=text id=fen[] value=0 size=4></div></td>"+
"<td width='10%'><div align=center><input name=downsize[] type=text id=downsize[] value='' size=8 placeholder='如:21 MB'></div></td>"+
"<td width='10%'><div align=center><input name=downpwd[] type=text id=downpwd[] value='' size=8 placeholder='网盘密码'></div></td>"+
"</tr>";
}
document.getElementById("adddown").innerHTML="<table width='100%' border=0 cellspacing=1 cellpadding=3>"+str+"</table>";
}
</script>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="25">下载地址前缀 :
<input name="downurl_qz" type="text" size="32">
<select name="changeurl_qz" onchange="document.add.downurl_qz.value=document.add.changeurl_qz.value">
<option value="" selected>选择前缀</option>
<?=$downurlqz?>
</select>
</td>
</tr>
<tr>
<td height="25">选择/上传附件:
<input name="changedown_url" id="changedown_url" type="text" size="32">
<input type="button" name="Submit" value="选择" onclick="window.open('ecmseditor/FileMain.php?type=0&classid=<?=$classid?>&infoid=<?=$id?>&filepass=<?=$filepass?>&sinfo=1&doing=1&field=changedown_url<?=$ecms_hashur[ehref]?>','','width=700,height=550,scrollbars=yes');">
<input type="button" name="Submit" value="复制" onclick="document.getElementById('changedown_url').focus();document.getElementById('changedown_url').select();clipboardData.setData('text',document.getElementById('changedown_url').value);"></td>
</tr>
<tr>
<td><table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#DBEAF5">
<tr>
<td width="6%"> <div align="center">编号</div></td>
<td width="14%"><div align="left">下载名称</div></td>
<td width="28%">下载地址 <font color="#666666">(双击选择)</font></td>
<td width="10%"> <div align="center">权限</div></td>
<td width="7%"> <div align="center">点数</div></td>
<td width="10%"> <div align="center">大小</div></td>
<td width="10%"> <div align="center">网盘密码</div></td>
</tr>
</table></td>
</tr>
<tr>
<td>
<?php
if($ecmsfirstpost==1)
{
?>
<table width='100%' border=0 cellspacing=1 cellpadding=3>
<?php
$editnum=3;
for($pathi=1;$pathi<=$editnum;$pathi++)
{
?>
<tr>
<td width='6%'> <div align=center><?=$pathi?></div></td>
<td width='14%'> <div align=left>
<input name=downname[] type=text value='下载地址<?=$pathi?>' size=14>
</div></td>
<td width='28%'>
<input name=downpath[] type=text size=28 id='downpath<?=$pathi?>' ondblclick="SpOpenChFile(0,'downpath<?=$pathi?>');">
<select name=thedownqz[]><option value=''>--地址前缀--</option><?=$newdownqz?></select>
</td>
<td width='10%'><div align=center>
<select name=downuser[]>
<option value=0>游客</option>
<?=$ygroup?>
</select>
</div></td>
<td width='7%'> <div align=center>
<input name=fen[] type=text value=0 size=4>
</div></td>
<td width='10%'> <div align=center>
<input name=downsize[] type=text value='' size=8 placeholder='如:21 MB'>
</div></td>
<td width='10%'> <div align=center>
<input name=downpwd[] type=text value='' size=8 placeholder='网盘密码'>
</div></td>
</tr>
<?php
}
?>
</table>
<?php
}
else
{
$editnum=0;
$downloadpath="";
if($r[downpath])
{
$r[downpath]=stripSlashes($r[downpath]);
//下载地址
$j=0;
$d_record=explode("\r\n",$r[downpath]);
for($i=0;$i<count($d_record);$i++)
{
$j=$i+1;
$d_field=explode("::::::",$d_record[$i]);
//权限
$tgroup=str_replace(" value=".$d_field[2].">"," value=".$d_field[2]." selected>",$ygroup);
//地址前缀
$tnewdownqz=str_replace(" value='".$d_field[4]."'>"," value='".$d_field[4]."' selected>",$newdownqz);
//大小(第6个字段,索引5)
$downsize_val = isset($d_field[5]) ? $d_field[5] : '';
//网盘密码(第7个字段,索引6)
$downpwd_val = isset($d_field[6]) ? $d_field[6] : '';
// 修正:PHP字符串拼接用 . 而不是 +
$downloadpath.="<tr>"
."<td width='6%'><div align=center>".$j."</div></td>"
."<td width='14%'><div align=left><input name=downname[] type=text id=downname[] value='".$d_field[0]."' size=14></div></td>"
."<td width='28%'><input name=downpath[] type=text id=downpath".$j." value='".$d_field[1]."' size=28 ondblclick=\"SpOpenChFile(0,'downpath".$j."');\"><select name=thedownqz[]><option value=''>--地址前缀--</option>".$tnewdownqz."</select><input type=hidden name=pathid[] value=".$j."><input type=checkbox name=delpathid[] value=".$j.">删</td>"
."<td width='10%'><div align=center><select name=downuser[] id=select><option value=0>游客</option>".$tgroup."</select></div></td>"
."<td width='7%'><div align=center><input name=fen[] type=text id=fen[] value='".$d_field[3]."' size=4></div></td>"
."<td width='10%'><div align=center><input name=downsize[] type=text id=downsize[] value='".$downsize_val."' size=8 placeholder='如:21 MB'></div></td>"
."<td width='10%'><div align=center><input name=downpwd[] type=text id=downpwd[] value='".$downpwd_val."' size=8 placeholder='网盘密码'></div></td>"
."</tr>";
}
$editnum=$j;
$downloadpath="<table width='100%' border=0 cellspacing=1 cellpadding=3>".$downloadpath."</table>";
}
echo $downloadpath;
}
?>
</td>
</tr>
<tr>
<td height="25">下载地址扩展数量: <input name="editnum" type="hidden" id="editnum" value="<?=$editnum?>">
<input name="downnum" type="text" id="downnum" value="1" size="6"> <input type="button" name="Submit5" value="输出地址" onclick="javascript:doadd();"></td>
</tr>
<tr>
<td id=adddown></td>
</tr>
</table>本文由网友投稿或聚码屋整理自网络,如转载请注明出处:https://www.ym3.net/2599.html;
本站发布的内容若侵犯到您的权益,请邮件联系 cnzz8#outlook.com 删除,我们将及时处理!
本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行测试。
本站资源仅供学习和交流使用,版权归资源原作者所有,请在下载后24小时之内自觉删除。
若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,与本站无关。
下一篇:已经是最新一篇了
还没有评论,快来说点什么吧~