本教程实现Dedecms功能:文章模型整合下载功能,可判断点数,会员组等下载权限,前台可判断是否有附件下载,有则显示,没有则不显示。适用类型:有些文章有下载地址,有些文章没有下载地址的网站。想附件收费的网站等等……具体就不啰嗦了。用得上您就拿走。
本教程为站长似水星辰原创,转载注明出处。
注:本教程中的金币和会员组设置只针对下载连接有效。不对文章内容生效,和文章本身的阅读权限和消费金币并不冲突,是分开设置的。文章中所有sql语句中涉及表名的,请把表前缀换成您自己的表前缀。如:js_addonarticle 换成 您的表前缀_addonarticle。
一、首先规划要加入的字段
下载链接:softlinks
消费金币:needmoney
会员组权限:daccess
这些字段要加入到文章附加表中,前缀_addonarticle,也可以根据自己情况加入需要的表中,自己修改就行了。
- ALTER TABLE `js_addonarticle` ADD `softlinks` TEXT NOT NULL ,
- ADD `needmoney` SMALLINT( 5 ) NOT NULL ,
- ADD `daccess` SMALLINT( 5 ) NOT NULL
然后在后台打开核心-频道模型-内容模型管理-普通文章-修改-字段管理,在模型字段配置(文本模式) 里添加
二、数据库字段添加完毕就要修改文章模型的4个文件了。分别是dede管理目录下的article_add.PHP,article_edit.PHP和管理模板article_add.htm,article_edit.htm,打开这4个文件依次修改。
1、修改article_add.htm,在头部的中加入以下,在之前加入就行
- var startNum = 0;
- function MakeUpload()
- {
- var upfield = document.getElementById("uploadfield");
- var endNum = parseInt(document.form1.picnum.value) + startNum-1;
- if(endNum > 30) endNum = 30;
- for(startNum; startNum<=endNum; startNum++){
-
upfield.innerHTML += "软件地址"+startNum+": 服务器名称:\r\n";
- }
- }
- function ShowHideAddr()
- {
- document.getElementById('morelink').style.display = (document.getElementById('morelink').style.display=='block' ? 'none' : 'block');
- document.getElementById('morelink').style.height = '100%';
- document.getElementById('btsh3').value = (document.getElementById('morelink').style.display=='block' ? '隐藏地址' : '显示地址');
- }
2、找到
再其后边加入
-
下载限制: -
- " size="8" />个
软件频道设置]中“附件下载方式:”必须选择“链接到@R_654_404@面”) -
本地软件选择: -
- 服务器名称:
- PHP
- if($softconfig['moresitedo'] == 0 && trim($softconfig['sites']) != '')
- {
- ?>
-
预设的镜像服务器: -
- (服务器地址 + 软件地址 = 软件真实地址 [软件频道设置])
- PHP
- $sites = explode("\n", $softconfig['sites']);
- $startNum = 2;
- foreach($sites as $site)
- {
- $site = trim($site);
- if(empty($site)) continue;
- list($siteurl, $sitename) = explode('|', $site);
- $siteurl = trim($siteurl);
- $sitename = trim($sitename);
- ?>
- :
- ' value='1' />
- ' style='width:200px' value='' /> +
- ' style='width:120px' value='' />
- ' style='width:150px' value='' />
- Box' name='need' class='np' value='1' checked />启用
- PHP
- $startNum++;
- }//foreach
- echo "\r\n";
- ?>
- PHP
- }//需要预设镜像
- ?>
-
手动指定地址: -
-
- (最多为30个链接)
3、打开article_edit.htm文件,在头部的中加入以下代码,在之前加入就行
- var startNum = ;
- function MakeUpload()
- {
- var upfield = document.getElementById('uploadfield');
- var endNum = parseInt(document.form1.picnum.value) + startNum;
- if(endNum > 30) endNum = 30;
- for(startNum; startNum < endNum; startNum++)
- {
-
upfield.innerHTML += "软件地址"+startNum+": 服务器名称:\r\n";
- }
- }
- function ShowHideAddr()
- {
- document.getElementById('morelink').style.display = (document.getElementById('morelink').style.display=='block' ? 'none' : 'block');
- document.getElementById('btsh3').value = (document.getElementById('morelink').style.display=='block' ? '隐藏地址' : '显示地址');
- }
4、找到
-
PHP - PrintAutoFieldsEdit($cInfos['fieldset'],$addRow,'autofield');
- ?>
在其下边加入以下代码:
-
- " size="8" />个
软件频道设置中“附件下载方式:”必须选择“链接到@R_654_404@面”) -
软件链接列表: -
-
- (最多为30个链接)
-
- PHP
- echo $nForm;
- ?>
article_edit.html修改完毕,接下来开始修改article_add.PHP,要认真看哦!
5、打开article_add.PHP,找到
- //保存到附加表
- $cts = $dsql->GetOne("SELECT addtable FROM `js_channeltype` WHERE id='$channelid' ");
在其上边加入
- //软件链接列表
- $urls = '';
- //本地链接处理
- $softurl1 = stripslashes($softurl1);
- $nsoftsize = '';
- if($softurl1 != '')
- {
- $urls .= "{dede:link islocal='1' text='{$servermsg1}'} $softurl1 {/dede:link}\r\n";
- }
- //其它链接处理
- for($i=2; $i<=30; $i++)
- {
- if(!(${'softurl'.$i}))
- {
- $forconfig = (${'forconfig'.$i}) ? FALSE : TRUE;
- if($forconfig)
- {
- if(empty(${'need'.$i})) continue;
- $serverUrl = stripslashes(${'softurlfirst'.$i});
- $serverUrl = preg_replace("#\/$#", "", $serverUrl);
- $softurl = stripslashes(${'softurl'.$i});
- if( cn_substr($softurl, 1) != '/' ) $softurl = '/'.$softurl;
- $softurl = $serverUrl.$softurl;
- }
- else
- {
- $softurl = stripslashes(${'softurl'.$i});
- }
- $servermsg = str_replace("'", stripslashes(${'servermsg'.$i}));
- if($servermsg=='') $servermsg = '下载地址'.$i;
- if($softurl != 'http://')
- {
- $urls .= "{dede:link text='$servermsg'} $softurl {/dede:link}\r\n";
- }
- }
- }
- $urls = addslashes($urls);
这段大概在203行左右,主要作用是处理下载地址。然后再找到
- $query = "INSERT INTO `{$addtable}`(aid,typeid,redirecturl,templet,userip,body{$inadd_f}) Values('$arcID','$typeid','$redirecturl','$templet','$useip','$body'{$inadd_v})";
替换为
- $query = "INSERT INTO `{$addtable}`(aid,body,softlinks,needmoney,daccess{$inadd_f}) Values('$arcID','$body','$urls','$needmoney','$daccess'{$inadd_v})";
article_add.PHP修改完毕,添加一下文章,把下载地址,金币,会员组都写进去,看看数据库是不是有这条记录了^ ^。
6、打开article_edit.PHP,找到
- $channelid = $arcRow['channel'];
在其上边加入
- $newRowStart = 1;
- $nForm = '';
- $daccess = $addRow['daccess'];
- $needmoney = $addRow['needmoney'];
- if($addRow['softlinks'] != '')
- {
- $dtp = new DedeTagParse();
- $dtp->LoadSource($addRow['softlinks']);
- if(is_array($dtp->CTags))
- {
- foreach($dtp->CTags as $ctag)
- {
- if($ctag->GetName()=='link')
- {
- $islocal = $ctag->GetAtt('islocal');
- if($islocal != 1) $needmsg = "删除";
- else $needmsg = '';
- $nForm .= "\r\n";
- $newRowStart++;
- }
- }
- }
- $dtp->Clear();
- }
找到
- $cts = $dsql->GetOne("SELECT addtable FROM `js_channeltype` WHERE id='$channelid' ");
在其上边加入以下代码:
- //软件链接列表
- $urls = '';
- for($i=1; $i<=30; $i++)
- {
- if(!empty(${'softurl'.$i}))
- {
- $islocal = empty(${'islocal'.$i}) ? '' : 1;
- $isneed = empty(${'del'.$i}) ? true : false;
- $servermsg = str_replace("'",'',stripslashes(${'servermsg'.$i}));
- $softurl = stripslashes(${'softurl'.$i});
- if($servermsg=='')
- {
- $servermsg = '下载地址'.$i;
- }
- if($softurl != 'http://')
- {
- if($islocal==1) $urls .= "{dede:link islocal='$islocal' text='{$servermsg}'} $softurl {/dede:link}\r\n" ;
- else if($isneed) $urls .= "{dede:link text='$servermsg'} $softurl {/dede:link}\r\n";
- else continue;
- }
- }
- }
- $urls = addslashes($urls);
找到
- $iquery = "UPDATE `$addtable` SET typeid='$typeid',body='$body'{$inadd_f},redirecturl='$redirecturl',templet='$templet',userip='$useip' WHERE aid='$id'";
替换为:
- $iquery = "UPDATE `$addtable` SET typeid='$typeid',userip='$useip',softlinks ='$urls',needmoney = '$needmoney',daccess = '$daccess' WHERE aid='$id'";
至此本教程后台修改部分已经完毕,你学会了吗?接下来开始前台部分。
- {dede:field name='softlinks'/}
这个就是调用下载地址,打开的页面为软件模型的下载页,在哪里可以判断到下载的权限。这里就不多讲了,改完后就可以看到了。
有一种情况,就是有些网友希望没有下载地址的话就不显示,这里可以提供一种方法。把如下代码复制到文章模板里即可。
- {dede:PHP}
- $thisid = $refObj->Fields['aid'];
- $totrow=$dsql->GetOne('select * from js_addonarticle where aid='.$thisid);
- if($totrow['softlinks']!='')
- {
- echo "PHP?open=0&aid=".$thisid."&cid=1\" style=\"color:white\" target=\"_blank\">下载地址";
- }
- {/dede:PHP}
到这里,本教程全文完毕。
原文链接:https://www.f2er.com/dedecms/404007.html