织梦dedecms文章模型整合下载功能,可判断点数,会员组等下载权限

织梦教程 强烈建议 2024-06-16 10:32 51 0

  本教程实现DEDECMS功能:文章模型整合下载功能,可判断点数,会员组等下载权限,前台可判断是否有附件下载,有则显示,没有则不显示。适用类型:有些文章有下载地址,有些文章没有下载地址的网站。想附件收费的网站等等……具体就不啰嗦了。用得上您就拿走。

  DEDECMS文章模型整合下载功能,可判断点数,会员组等下载权限

  后台效果图

  注:本教程中的金币和会员组设置只针对下载连接有效。不对文章内容生效,和文章本身的阅读权限和消费金币并不冲突,是分开设置的。文章中所有sql语句中涉及表名的,请把表前缀换成您自己的表前缀。如:js_addonarticle 换成 您的表前缀_addonarticle。

  一、首先规划要加入的字段

  下载链接:softlinks

  消费金币:needmoney

  会员组权限:daccess

  这些字段要加入到文章附加表中,前缀_addonarticle,也可以根据自己情况加入需要的表中,自己修改就行了。

  进入后台系统-SQL命令行工具,执行:

  ALTER TABLE `js_addonarticle` ADD `softlinks` TEXT NOT NULL ,

  ADD `needmoney` SMALLINT( 5 ) NOT NULL ,

  ADD `daccess` SMALLINT( 5 ) NOT NULL

  也可以在phpmyadmin中自行添加。

  然后在后台打开核心-频道模型-内容模型管理-普通文章-修改-字段管理,在模型字段配置(文本模式) 里添加

  

  

  

  如果不添加则会出现无链接信息错误!请务必添加。

  二、数据库字段添加完毕就要修改文章模型的4个文件了。分别是dede管理目录下的article_add.php,article_edit.php和管理模板article_add.htm,article_edit.htm,打开这4个文件依次修改。

  1、修改article_add.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+": 服务器名称:

  ";

  }

  }

  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、找到

  PrintAutoFieldsEdit($cInfos['fieldset'],$addRow,'autofield');

  ?>在其下边加入以下代码:

需会员权限: 需消费金币:
(如果设定了下载限制,软件频道设置中“附件下载方式:”必须选择“链接到跳转页面”)
软件链接列表:
其它地址: (最多为30个链接)

  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}

  ";

  }

  //其它链接处理

  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 != '')

  {

  $urls .= "{dede:link text='$servermsg'} $softurl {/dede:link}

  ";

  }

  }

  }

  $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,typeid,redirecturl,templet,userip,body,softlinks,needmoney,daccess{$inadd_f}) Values('$arcID','$typeid','$redirecturl','$templet','$useip','$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 .= "

软件地址{$newRowStart}: 服务器名称: $needmsg

  ";

  $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 != '')

  {

  if($islocal==1) $urls .= "{dede:link islocal='$islocal' text='{$servermsg}'} $softurl {/dede:link}

  " ;

  else if($isneed) $urls .= "{dede:link text='$servermsg'} $softurl {/dede:link}

  ";

  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',body='$body'{$inadd_f},redirecturl='$redirecturl',templet='$templet',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 "下载地址";

  }

  {/dede:php}

  前台效果图

  到这里,本教程全文完毕。

本站资源均来自互联网或会员发布,如果不小心侵犯了您的权益请与我们联系。我们将立即删除!谢谢!