核心原理
- 数据存储:织梦默认的软件模型中,有一个字段
click(或类似名称,如downnums),专门用来存储下载次数,这个字段的类型通常是int。 - 显示次数:在模板文件(
list_artlist.htm,article_article.htm等)中,通过调用织梦的标签{field.click/}来读取并显示这个字段的值。 - 增加次数:当用户点击下载链接时,不能直接指向软件文件,而是要指向一个织梦的专门处理下载的PHP脚本(通常是
plus/download.php),这个脚本在执行真正的文件下载操作前,会先找到对应文章的click字段,将其值+1,然后再进行下载。
第一步:在模板中显示下载次数
这是最简单的一步,您需要修改您当前使用的模板文件。

(图片来源网络,侵删)
在列表页显示下载次数
打开您的列表模板文件,通常位于 /templets/您的栏目目录/list_artlist.htm。
找到您希望显示下载次数的位置,加入以下织梦标签:
[field:click/]
示例:
假设您的列表项模板代码是这样的:

(图片来源网络,侵删)
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>大小:[field:filesize/] | 格式:[filetype]</span>
</li>
您可以将其修改为:
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>大小:[field:filesize/] | 格式:[filetype] | 下载:[field:click/] 次</span>
</li>
这样,在列表的每一项后面都会显示该软件的下载次数。
页显示下载次数
打开您的文章内容页模板文件,通常位于 /templets/您的栏目目录/article_article.htm。
在您希望显示下载次数的位置(软件信息列表区域),加入同样的标签:
下载次数:{field.click/} 次
示例:
<div class="software-info">
<p>软件名称:{title}</p>
<p>软件大小:{filesize}</p>
<p>软件版本:{version}</p>
<p>更新时间:{pubdate}</p>
<p>下载次数:<strong>{field.click/}</strong> 次</p>
<!-- 下载按钮 -->
<a href="{dede:field name='phpurl'/}/download.php?aid={dede:field.id/}" target="_blank">立即下载</a>
</div>
注意页的下载按钮链接,我们推荐使用 plus/download.php 的形式,这比直接指向附件链接更规范,也方便后续扩展。
第二步:确保下载功能正常工作(增加次数)
这一步是关键,确保每次点击下载,次数都能正确增加。
检查并修改下载链接
页的下载链接应该指向 plus/download.php,请确保您的模板中的下载链接是正确的格式:
<a href="{dede:field name='phpurl'/}/download.php?aid={dede:field.id/}" target="_blank">立即下载</a>
{dede:field name='phpurl'/}:会自动解析为您的网站根目录下的plus文件夹。aid={dede:field.id/}:将当前文章的ID传递给下载脚本。
检查 plus/download.php 文件
织梦默认自带的 plus/download.php 文件已经包含了增加下载次数的逻辑,您需要检查一下这个文件是否存在,并且没有被误删或修改。
打开 /plus/download.php 文件,找到类似下面的代码块:
//更新下载次数
$dsql->ExecuteNoneQuery("UPDATE `#@__downloads` SET `click`=`click`+1 WHERE `id`=$aid");
或者在某些版本中可能是:
//更新下载次数
$dsql->ExecuteNoneQuery("UPDATE `#@__archives` SET `click`=`click`+1 WHERE `id`=$aid");
重要提示:
- 确保这段代码没有被注释掉(即前面没有 或 )。
- 如果您的织梦版本比较旧,或者经过二次开发,这段代码可能不存在或位置不同,如果不存在,您需要手动添加。
#@__downloads是织梦系统用来记录下载次数的表,如果您在后台模型中没有使用这个表,而是直接在#@__archives(主表)中记录,那么就需要使用#@__archives。
检查附件是否正确上传
- 进入后台 [核心] -> 模型管理] -> [软件模型] (或您使用的模型)。
- 检查字段设置,确保有一个“下载地址”类型的字段,并且您上传的软件文件已经正确关联到文章中。
- 次数不增加是因为文章根本没有关联任何附件,导致
download.php找不到文件而提前退出。
第三步:如果下载次数不增加,如何排查?
如果按照以上步骤操作,下载次数仍然不增加,可以按照以下思路排查:
-
检查数据库:
- 进入您的网站数据库管理(如 phpMyAdmin)。
- 找到
dede_archives表(主表),找到对应的软件文章,查看click字段的值。 - 再找到
dede_downloads表,看是否有对应aid的记录,以及click字段的值。 - 尝试手动将
click的值加一,然后重新下载,看是否变化,这样可以判断问题出在数据库层面还是PHP脚本层面。
-
检查文件权限:
- 确保
/plus/download.php文件有可执行权限(通常是 755)。 - 确保您的软件附件所在的目录(如
/uploads/soft/)有正确的读取权限。
- 确保
-
检查JS或缓存问题:
- 有时下载链接被前端JS重写或拦截,导致实际点击的不是
download.php,请检查浏览器开发者工具的“网络”面板,看实际请求的URL是什么。 - 清理浏览器缓存和织梦的后台缓存 ([系统] -> [一键生成] -> [更新缓存)。
- 有时下载链接被前端JS重写或拦截,导致实际点击的不是
-
检查PHP错误日志:
- 如果服务器开启了错误日志,查看
/plus/download.php是否有报错,导致脚本执行中断。
- 如果服务器开启了错误日志,查看
总结与最佳实践
| 步骤 | 操作 | 文件/位置 | 关键代码/标签 |
|---|---|---|---|
| 显示次数 | 在列表页模板中添加显示标签 | /templets/.../list_artlist.htm |
[field:click/] |
| 显示次数 | 页模板中添加显示标签 | /templets/.../article_article.htm |
{field.click/} |
| 修改下载链接 | 确保下载指向PHP脚本 | 内容页模板 | href="{dede:field name='phpurl'}/download.php?aid={dede:field.id/}" |
| 检查核心脚本 | 确保download.php逻辑完整 |
/plus/download.php |
UPDATE ... SET click=click+1 WHERE id=$aid |
通过以上步骤,您就可以在织梦CMS中完美地实现并显示软件下载次数了,这个功能对于评估软件的受欢迎程度非常有用。
