dede 下载不加次数

99ANYc3cd6
预计阅读时长 13 分钟
位置: 首页 DEDE建站 正文

最核心的修改点在于,我们需要找到处理下载次数的代码,并让特定类型的文件或特定目录下的文件跳过这个计数逻辑。

dede 下载不加次数
(图片来源网络,侵删)

这里为您提供两种最常用和最有效的方法:


修改核心 PHP 文件(最直接、最彻底)

这种方法直接修改 DedeCMS 处理下载的底层代码,实现一劳永逸的效果。

第一步:定位核心文件

下载次数的增加逻辑主要在 include/dedecollection.class.php 文件中,这个文件是 DedeCMS 的“我的收藏夹”功能类,但它也负责处理附件的点击(下载)次数。

第二步:修改代码

  1. 用 FTP 或文件管理器登录您的网站,找到并打开文件:/include/dedecollection.class.php

    dede 下载不加次数
    (图片来源网络,侵删)
  2. 在文件中找到 Click() 函数,这个函数就是每次下载时被调用来增加点击次数的地方。

  3. 修改前的代码(示例,具体行数可能因版本而异):

    function Click($aid)
    {
        $this->dsql->ExecuteNoneQuery("UPDATE `#@__downloads` SET clicks=clicks+1 WHERE id='$aid'; ");
        return true;
    }
  4. 修改后的代码(增加判断条件): 我们可以在 Click() 函数的开头加入一个判断,如果文件路径满足某个条件,就直接 return,不执行后面的 SQL 更新语句。

    function Click($aid)
    {
        // --- 新增的判断逻辑开始 ---
        // 先获取附件信息
        $row = $this->dsql->GetOne("SELECT url FROM `#@__downloads` WHERE id='$aid'; ");
        if ($row) {
            // 判断文件路径是否包含特定关键词
            // 路径中包含 'no_count' 或 'temp' 或 'statics' 的文件不计数
            if (strpos($row['url'], 'no_count') !== false || strpos($row['url'], 'temp') !== false) {
                // 满足条件,不增加点击次数,直接返回
                return true;
            }
        }
        // --- 新增的判断逻辑结束 ---
        // 原有的增加点击次数的逻辑
        $this->dsql->ExecuteNoneQuery("UPDATE `#@__downloads` SET clicks=clicks+1 WHERE id='$aid'; ");
        return true;
    }

代码解释:

dede 下载不加次数
(图片来源网络,侵删)
  • if ($row): 先查询出这个附件的 url 路径。
  • strpos($row['url'], 'no_count') !== false: 使用 strpos 函数检查文件路径中是否包含我们设定的关键词,'no_count',如果包含,strpos 会返回该关键词的位置(一个数字),不包含则返回 false
  • return true;: 如果路径中包含了关键词,就立即结束函数,不再执行下面的 UPDATE 语句,从而实现了“不增加下载次数”的效果。

第三步:应用修改

  1. 保存并上传修改后的 dedecollection.class.php 文件。
  2. 上传一个新文件到您的网站,上传到 /uploads/no_count/ 目录下。
  3. 在 DedeCMS 后台,将这个文件添加到“文档附件”中。
  4. 访问该文件的下载链接,然后回到后台查看“文件管理器”,你会发现该附件的点击次数没有增加

优点:

  • 一劳永逸,所有符合条件的文件都会自动生效。
  • 逻辑清晰,直接作用于核心功能。

缺点:

  • 需要修改核心文件,升级 DedeCMS 时可能会被覆盖,需要重新修改。

使用 JavaScript 前端跳转(更灵活,适合特定场景)

这种方法不修改 PHP 代码,而是通过在前端页面添加一段 JavaScript 代码,让特定链接直接指向文件的真实地址,从而绕过 DedeCMS 的下载处理页面。

适用场景:

  • 你只想让某个或某几个特定链接不计数。
  • 你不想修改网站的核心文件。

操作步骤:

  1. 找到下载链接的生成代码: 在 DedeCMS 的模板文件(通常是 article_article.htm)中,找到生成下载链接的代码,它通常是这样的:

    <a href="{dede:field name='arcurl'/}?downid={dede:field name='id'/}" target="_blank">下载附件</a>

    或者使用 {dede:field name='softlink'/}

  2. 修改模板文件,添加 JS 跳转: 我们给这个链接添加一个 onclick 事件,当点击时,用 JavaScript 直接跳转到附件的真实地址。

    <!-- 原始链接 -->
    <!-- <a href="{dede:field name='arcurl'/}?downid={dede:field name='id'/}" target="_blank">下载附件</a> -->
    <!-- 修改后的链接,假设附件的真实地址存储在[field:softurl/]中 -->
    <a href="javascript:;" onclick="window.open('{dede:field name='softurl'/}')" target="_blank">下载附件(不计数)</a>

    注意:

    • {dede:field name='softurl'/} 这个标签通常可以直接获取到附件的原始、未经处理的 URL,请确认在你的模板中这个标签是否能正确输出文件路径。
    • softurl 不可用,你可能需要通过自定义字段或其他方式获取到文件的绝对路径。
    • href="javascript:;" 是一个空白的链接,防止页面刷新。
    • onclick="window.open(...)" 会在新窗口中打开真实的文件地址,完全绕过了 DedeCMS 的 download.php 处理页面。

优点:

  • 无需修改核心文件,升级无忧。
  • 灵活性高,可以精确控制哪些链接需要跳过。

缺点:

  • 需要手动为每个需要“不计数”的链接修改模板。
  • 如果附件路径发生变动,需要手动更新模板。

总结与建议

方法 优点 缺点 推荐场景
修改 PHP 一劳永逸,全自动,符合所有场景 修改核心文件,升级可能覆盖 需要批量处理,或创建一个专门的“免计数”资源库。
JS 跳转 安全灵活,不修改核心文件 需手动修改模板,不够自动化 只需偶尔为个别文件设置,或不想动核心代码时。

对于绝大多数用户,方法一(修改 dedecollection.class.php 是最推荐、最规范的解决方案,你可以设定一个特殊的目录(如 uploads/no_count/),所有上传到这个目录的文件,在添加为附件后,下载都不会增加次数,非常方便。

-- 展开阅读全文 --
头像
织梦怎么更改内页模板
« 上一篇 03-21
linux c语言程序设计
下一篇 » 03-21

相关文章

取消
微信二维码
支付宝二维码