欢迎访问艾立兹站 Aliz- 专注建站教程与技术分享
您当前的位置:首页 > 建站教程 > 帝国 CMS 教程

帝国 CMS 最终下载页调用自定义字段内容的方法|下载跳转页读取附加字段

时间:2026-08-28 12:55:00  来源:aliz.cn  作者:SKY  阅读:

前言

帝国 CMS 下载模型,前台点击下载按钮,会跳转到 /e/DownSys/DownSoft.php 下载中转页面(最终下载页)。 很多站长遇到一个难题:下载跳转页面只能读取标题、下载地址,无法直接调用你新建的自定义字段,例如:软件大小、版本号、更新日志、提取码、网盘密码、简介说明等附加内容。

适配版本:帝国 CMS7.5 / 8.0 ⚠️注意:修改程序文件前务必备份原文件。

原理说明

下载页DownSoft.php只接收 id(信息 ID)和 classid(栏目 ID)两个参数。 系统默认只读取下载地址数据表,不会主动查询主数据表的自定义字段,所以我们需要手动根据信息 ID 去查主表数据。

方案一:直接修改下载中转页(最简单,适合固定需求)

打开文件:/e/DownSys/DownSoft.php

找到代码位置:

$id=(int)$_GET['id'];
$classid=(int)$_GET['classid'];

往下找到查询下载信息代码,在查询下载地址之后,增加一条查询主表自定义字段的 SQL

//读取文章主表数据,news替换成你的模型数据表后缀
$cr=$empire->fetch1("select 版本,网盘密码,softsize from {$dbtbpre}ecms_soft where id='$id' limit 1");

字段说明:版本、网盘密码、softsize 替换成你自己后台创建的自定义字段名称。

之后就可以在页面 HTML 输出位置调用字段:

软件版本:<?=$cr['版本']?> <br>
网盘提取密码:<?=$cr['网盘密码']?> <br>
文件大小:<?=$cr['softsize']?>

### 完整示例片段

$id=(int)$_GET['id'];
$classid=(int)$_GET['classid'];

//原有下载查询代码省略……

//新增:读取主表自定义字段
$cr=$empire->fetch1("select log,password,size from {$dbtbpre}ecms_soft where id='$id' limit 1");

HTML 输出区域:

<div class="down‑info">
    <p>更新日志:<?=$cr['log']?></p>
    <p>网盘密码:<?=$cr['password']?></p>
</div>

注意数据表后缀:

  • 下载模型默认:ecms_soft
  • 新闻模型:ecms_news

你可在后台【数据表与系统模型】查看真实数据表名称。

方案二、新建自定义下载中转页面(推荐!不改动官方原文件)

不修改官方DownSoft.php,自建一个跳转页面,后期升级帝国 CMS 不会覆盖你的修改。

1、新建文件 /e/DownSys/myDown.php

<?php
require('../../class/connect.php');
require('../../class/db_sql.php');
$link=db_connect();
$empire=new mysqlquery();

$id=(int)$_GET['id'];
$classid=(int)$_GET['classid'];

//读取下载主表自定义字段
$r=$empire->fetch1("select title,password,version from {$dbtbpre}ecms_soft where id='$id'");

//读取官方下载地址
$down=$empire->fetch1("select * from {$dbtbpre}enewsdownload where id='$id'");

//获取真实下载链接
$downurl=DoDownUrl($down['downurl'],$down['id'],$down['classid']);
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf‑8">
<title><?=$r['title']?>‑下载</title>
</head>
<body>
    <h3><?=$r['title']?></h3>
    <p>版本号:<?=$r['version']?></p>
    <p>网盘密码:<?=$r['password']?></p>
    <a href="<?=$downurl?>">点击下载</a>
</body>
</html>
<?php
db_close();
$empire=null;
?>

2、内容页下载按钮链接改为调用自建页面

<a href="/e/DownSys/myDown.php?id=[!--id--]&classid=[!--classid--]">立即下载</a>

方案三、弹窗下载(不跳转页面,列表 / 内容页直接输出自定义字段)

不使用官方中转下载页,在文章详情页直接输出下载地址 + 自定义字段。 内容模板中使用灵动标签根据 id 读取附加字段:

[e:loop={'select password,version from phome_ecms_soft where id=[!--id--]',1,0,0}]
网盘密码:<?=$bqr['password']?>
版本号:<?=$bqr['version']?>
[/e:loop]

然后直接输出下载链接,绕过 down.php 中转页。

四、常见报错排查清单

  1. 自定义字段调用空白,没有输出内容
    • 核对数据表后缀是否写错;
    • 字段名称大小写,帝国 MySQL 字段区分大小写;
    • id 参数是否正常传递。
  2. 下载计数不会增加 自建下载页面,需要加上下载点击计数代码,否则官方下载次数不会累加。
    AddDownCount($id,$classid);
    
  3. 修改后页面 404 文件上传路径错误,文件放到 /e/DownSys/目录下。
  4. 升级帝国 CMS 修改失效 原因:直接改了官方 DownSoft.php,升级程序覆盖文件。优先推荐自建下载中转页方案

五、下载点击计数完整代码(自建页面需要加上)

//下载次数+1
AddDownCount($id,$classid);

结语

帝国 CMS 原生下载中转页并不会主动加载内容自定义字段。想要在最终下载页显示版本号、网盘密码、更新日志等附加信息,最稳妥的方案就是自建下载跳转页面,既实现自定义字段调用,又不会被帝国 CMS 升级覆盖源码。

本文配套模板、静态源码可前往艾立兹素材库alisucai.com下载

发表评论 共有0条评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
公众号二维码

扫码关注公众号
获取全套技术教程