在Dedecms(DedeCMS)系统中,下载频道的下载次数无法正常显示是一个常见的问题,尽管官方没有提供直接的解决方案,但通过一些技术手段,可以暂时解决这一问题,以下是详细的解决方法和步骤:
方法一:将下载次数替换为浏览次数
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. 按照升级指南完成升级,并重新部署频道内容。 |
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1215992.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复