当前位置:首页 > 行业动态 > 正文

为什么Dede下载频道的下载次数没有显示,有什么解决办法吗?

请检查Dede后台设置和频道配置,确保正确启用了下载功能。

在Dedecms(DedeCMS)系统中,下载频道的下载次数无法正常显示是一个常见的问题,尽管官方没有提供直接的解决方案,但通过一些技术手段,可以暂时解决这一问题,以下是详细的解决方法和步骤:

为什么Dede下载频道的下载次数没有显示,有什么解决办法吗?  第1张

方法一:将下载次数替换为浏览次数

1、找到模板文件中的“下载次数”代码

打开模板文件夹中的相关文件,找到显示下载次数的代码段,该代码会类似于以下形式:

     <script src="{dede:field name=phpurl/}/countphp?aid={dede:field name=aid/}&cid={dede:field name=channel/}"></script>

将其替换为如下代码:

     <script src="{dede:field name=phpurl/}/countphp?aid={dede:field name=aid/}&cid={dede:field name=channel/}&view=yes" language="javascript"></script>

这段代码将下载次数的统计改为浏览次数,虽然不是真正的下载次数,但至少能提供一个参考值。

方法二:修改下载次数统计逻辑

1、编辑plusdownload.php文件

打开plusdownload.php文件,找到以下代码:

     $vname = ''; 
     foreach($cu>ChannelFields as $k=>$v){ 
         if($v['type']=='softlinks'){ $vname=$k; break; } 
     }

在该代码前面添加如下代码:

     $id = isset($id) && is_numeric($id) ? $id : 0; 
     $hash = md5($link); 
     $query = "select click from dede_archives where id='$aid'"; 
     $row = $dsql>GetOne($query); 
     $query = "update dede_archives set click=click+1 where id='$aid'"; 
     $dsql>ExecNoneQuery($query);

这些代码将在每次下载时更新数据库中的点击数。

2、编辑plusdisdls.php文件

打开plusdisdls.php文件,用以下代码全部替换:

     <?php 
     require_once(dirname(__FILE__)."/../include/common.inc.php"); 
     $aid = (isset($aid) && is_numeric($aid)) ? $aid : 0; 
     $row = $dsql>GetOne("Select click Fromdede_archives where id='$aid' "); 
     if(is_array($row)) 
     { 
         echo "document.write('".$row['click']."');r
"; 
     } 
     exit();

如果想显示下载次数,可以将以下JS调用放到文档模板适当位置:

     <script src="{dede:field name='phpurl'/}/disdls.php?aid={dede:field name='id'/}" language="javascript"></script>

方法三:实现真实下载次数统计

1、新建downclick.php文件

在include目录下新建一个名为downclick.php的文件,内容如下:

     $a=$_COOKIE["a"];

2、编辑plusdownload.php文件

打开plusdownload.php文件,找到以下代码:

     $dsq = $_GET['dsq'];
     $link = $_GET['link'];
     $filename = basename($link);
     $filepath = substr($link, 0, strlen($link)  strlen($filename));
     $filedir = substr($filepath, strlen($filedir) + 1);
     $fileurl = $filepath . "/" . $filename;

在该代码后面添加如下代码:

     if ($dsq == '') {
         return;
     } else {
         $id = isset($id) && is_numeric($id) ? $id : 0;
         $hash = md5($link);
         $query = "select click from dede_archives where id='$aid'";
         $row = $dsql>GetOne($query);
         $query = "update dede_archives set click=click+1 where id='$aid'";
         $dsql>ExecNoneQuery($query);
     }

3、编辑plusdisdls.php文件

打开plusdisdls.php文件,用以下代码全部替换:

     <?php 
     require_once(dirname(__FILE__)."/../include/common.inc.php"); 
     $aid = (isset($aid) && is_numeric($aid)) ? $aid : 0; 
     $row = $dsql>GetOne("Select click Fromdede_archives where id='$aid' "); 
     if(is_array($row)) 
     { 
         echo "document.write('".$row['click']."');r
"; 
     } 
     exit();

如果想显示下载次数,可以将以下JS调用放到文档模板适当位置:

     <script src="{dede:field name='phpurl'/}/disdls.php?aid={dede:field name='id'/}" language="javascript"></script>

方法可以帮助解决Dedecms下载频道不显示下载次数的问题,需要注意的是,这些解决方案主要针对旧版本的Dedecms系统,对于新版本或不同配置的系统,可能需要进行相应的调整。

解决方法 步骤
方法一:检查配置文件 1. 打开Dede后台管理。 2. 进入“系统”菜单下的“配置管理”。 3. 查找并进入“下载频道配置”。 4. 确保“显示下载次数”选项被勾选。 5. 保存并重新部署频道内容。
方法二:更新缓存 1. 在Dede后台管理中,进入“系统”菜单下的“缓存管理”。 2. 清除所有缓存,包括下载频道相关的缓存。 3. 保存并重新部署频道内容。
方法三:检查数据库 1. 登录到数据库管理工具。 2. 查找下载频道相关的数据表。 3. 检查“下载次数”字段是否存在且数据正确。 4. 如果有误,进行修正。 5. 保存更改并重新部署频道内容。
方法四:检查插件或模板 1. 检查是否有修改过Dede下载频道的插件或模板。 2. 如果有,尝试还原到原始状态。 3. 重新部署频道内容。
方法五:更新DedeCMS 1. 如果以上方法都不能解决问题,可能需要检查DedeCMS版本是否过旧。 2. 升级到最新版本的DedeCMS。 3. 按照升级指南完成升级,并重新部署频道内容。
0