制作一个下载页面模板,通常需要用到 DedeCMS 的几个核心功能:

(图片来源网络,侵删)
- 自定义模型:创建一个专门用于下载资源的模型,而不是直接使用默认的“文章模型”。
- 自定义字段:在下载模型中添加必要的字段,如下载地址、文件大小、授权方式、解压密码等。
- 模板制作:编写一个独立的模板文件来展示这些自定义字段。
- 栏目设置:创建一个专门的下载栏目,并关联这个自定义模板。
下面是详细的步骤和代码示例。
第一步:创建自定义模型(最核心的一步)
这是制作下载页面的基础,我们需要一个比普通文章更复杂的模型来存放下载信息。
-
登录后台:进入 DedeCMS 后台管理。
-
找到模型管理:在左侧菜单栏,依次点击
核心->内容模型管理。
(图片来源网络,侵删) -
添加新模型:点击右上角的
增加新模型按钮。 -
填写模型信息:
- 模型名称:填写
下载或资源下载。 - 表前缀:保持默认的
dede_即可。 - 名称规则:可以自定义,
{typedir}/{aid}.html。 - 列表项数:设置列表每页显示的文章数量。
- 简介长度:设置下载列表页中描述的长度。
- 图片目录:存放相关图片的目录,保持默认即可。
- 附件目录:存放相关附件的目录,保持默认即可。
- 其他选项:根据需要选择,例如是否启用评论等。
- 模型名称:填写
-
添加自定义字段:这是最关键的一步,在添加完模型基本信息后,点击
保存,系统会跳转到字段管理界面。- 批量添加字段:点击
批量增加字段可以快速添加常用字段。 - 手动添加字段:点击
增加新字段可以更精细地控制每个字段。
- 批量添加字段:点击
建议添加的下载字段如下:

(图片来源网络,侵删)
| 字段名 | 字段标识 | 字段类型 | 字段说明 |
|---|---|---|---|
| 下载地址 | downloadurl |
多文本/编辑器 | 用于填写下载链接,可以是多个。 |
| 文件大小 | filesize |
单行文本 | 显示文件大小,如 "12.5MB"。 |
| 授权方式 | license |
单行文本/下拉 | 如 "免费"、"VIP专享"、"商业授权"等。 |
| 解压密码 | password |
单行文本 | 如果需要,填写解压密码。 |
| 软件截图 | images |
图片集 | 用于展示软件的预览图。 |
| 运行环境 | environment |
多行文本 | 如 "Windows 10 / 11, .NET Framework 4.5"。 |
| 更新时间 | updatetime |
时间日期 | 记录文件最后更新时间。 |
添加字段示例(以“下载地址”为例):
- 字段名称:下载地址
- 字段标识:
downloadurl(必须为英文小写,不能有空格) - 字段类型:选择
多文本或编辑器,选择编辑器可以更方便地填写和修改链接。 - 默认值:留空。
- 数据校验:根据需要设置,例如是否为必填。
- 显示在发布页:选择“是”。
- 前台显示:选择“是”。
添加完所有需要的字段后,点击 保存,你的自定义“下载”模型就创建完成了。
第二步:创建下载栏目
- 进入后台
频道管理->栏目管理。 - 点击
增加顶级栏目。 - 栏目信息:
- 栏目名称:填写
资源下载。 - 栏目目录:填写
download(这个会生成在网站的根目录下,如http://yourdomain.com/download/)。 - 栏目类型:选择
外部链接或内部栏目,如果是内部栏目,需要选择你刚创建的下载模型。 - 选择模型:如果选择了内部栏目,务必在这里选择你创建的
下载模型。 - 列表模板:稍后我们会创建,可以先留空或选择一个默认的。
- 文章模板:这是关键! 我们需要一个独立的页面来展示单个下载项的详细信息,先留空,等模板创建后再回来设置。
- 栏目名称:填写
第三步:制作下载页面模板
现在我们来制作两个模板:
- 列表页模板 (
download_list.htm):用于显示下载资源的列表。 - 内容页/详情页模板 (
download_article.htm):用于显示单个下载资源的详细信息。
列表页模板 (download_list.htm)
这个模板和普通文章列表模板类似,但通常会显示文件大小、授权方式等额外信息。
代码示例 (/templets/default/download_list.htm):
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">{dede:field.title/} - {dede:global.cfg_webname/}</title>
<meta name="description" content="{dede:field.description function='html2text(@me)'/}">
<link rel="stylesheet" href="/templets/style/style.css">
</head>
<body>
{dede:include filename="head.htm"/}
<div class="main">
<div class="path">
<a href="/">首页</a> > <a href="{dede:field name='typeurl'/}">{dede:field.typename/}</a>
</div>
<div class="download-list">
<h2>{dede:field.typename/}</h2>
{dede:list pagesize='10' titlelen='40'}
<div class="download-item">
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<p class="desc">[field:description function='cn_substr(@me, 100)'/]...</p>
<div class="info">
<span class="file-size">文件大小:[field:filesize/]</span>
<span class="license">授权方式:[field:license/]</span>
<span class="date">更新时间:[field:updatetime function='GetDateMK(@me)'/]</span>
</div>
</div>
{/dede:list}
<div class="page">
{dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
</div>
</div>
</div>
{dede:include filename="footer.htm"/}
</body>
</html>
说明:
{dede:list}:循环输出列表内容。[field:filesize/]、[field:license/]等是我们在第一步中添加的自定义字段,可以直接在这里调用。[field:arcurl/]是文章的链接。
详情页模板 (download_article.htm)
这是最重要的模板,用于展示单个下载资源的所有信息。
代码示例 (/templets/default/download_article.htm):
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">{dede:field.title/} - {dede:global.cfg_webname/}</title>
<meta name="description" content="{dede:field.description function='html2text(@me)'/}">
<link rel="stylesheet" href="/templets/style/style.css">
</head>
<body>
{dede:include filename="head.htm"/}
<div class="main">
<div class="path">
<a href="/">首页</a> > <a href="{dede:type typeid='0' row='1'}[field:typelink/]{/dede:type}">{dede:field.typename/}</a>
</div>
<div class="download-detail">
<h1>{dede:field.title/}</h1>
<div class="meta-info">
<span>文件大小:{dede:field.filesize/}</span>
<span>授权方式:{dede:field.license/}</span>
<span>更新时间:{dede:field.updatetime function='GetDateMK(@me)'/}</span>
{dede:field.password runphp='yes'}
if(@me) echo '<span>解压密码:<strong>'.@me.'</strong></span>';
{/dede:field.password}
</div>
<!-- 软件截图 -->
{dede:field.images runphp='yes'}
$images = @me;
if($images != ''){
$images_array = explode(',', $images);
echo '<div class="screenshots"><h3>软件截图</h3>';
foreach($images_array as $img){
echo '<img src="'.$img.'" alt="软件截图">';
}
echo '</div>';
}
{/dede:field.images}
<!-- 运行环境 -->
{dede:field.environment runphp='yes'}
$env = @me;
if($env != ''){
echo '<div class="environment"><h3>运行环境</h3><p>'.$env.'</p></div>';
}
{/dede:field.environment}
<!-- 下载地址 -->
<div class="download-links">
<h3>下载地址</h3>
{dede:field.downloadurl runphp='yes'}
$urls = @me;
if($urls != ''){
$urls_array = explode("\n", $urls);
echo '<ul>';
foreach($urls_array as $url){
if(trim($url) != ''){
// 可以在这里增加一些美化或统计点击的功能
echo '<li><a href="'.$url.'" target="_blank" rel="noopener noreferrer">点击下载</a></li>';
}
}
echo '</ul>';
}
{/dede:field.downloadurl}
</div>
<!-- 文章正文 -->
<div class="content">
{dede:field.body/}
</div>
<!-- 上下篇 -->
<div class="prenext">
<p>上一篇:{dede:prenext get='pre'/}</p>
<p>下一篇:{dede:prenext get='next'/}</p>
</div>
<!-- 下载说明/评论等 -->
{dede:include filename='phpcms/feedback.htm'/}
</div>
</div>
{dede:include filename="footer.htm"/}
</body>
</html>
说明:
{dede:field.xxx/}:直接调用我们创建的自定义字段。runphp='yes':这是 PHP 代码块,非常强大,用于处理复杂的字段内容,- 将图片集(逗号分隔的字符串)转换成
<img>- 将多行文本(换行符分隔)转换成
<li>列表。- 条件判断,比如只有存在“解压密码”时才显示。
- 将多行文本(换行符分隔)转换成
- 将图片集(逗号分隔的字符串)转换成
[field:body/]:调用文章的正文内容,你也可以在这里添加使用说明、功能介绍等。
第四步:关联模板并测试
- 返回栏目管理:进入后台
频道管理->栏目管理。 - 编辑下载栏目:找到你创建的
资源下载栏目,点击后面的修改。 - 设置模板:
- 列表模板:选择你刚刚创建的
download_list.htm。 - 文章模板:选择你刚刚创建的
download_article.htm。
- 列表模板:选择你刚刚创建的
- 保存。
- :去
内容管理-> ,你应该能看到一个新的模型选择界面,选择你创建的下载模型,然后填写你添加的自定义字段并发布。 - 前台访问:
- 访问你的下载栏目列表页:
http://yourdomain.com/download/,检查列表模板是否正常显示。 - 点击其中一篇文章,访问详情页:
http://yourdomain.com/download/1.html,检查详情页模板是否正确展示了所有自定义字段。
- 访问你的下载栏目列表页:
高级技巧与注意事项
- 防盗链:如果你希望用户必须从你的网站下载,而不是直接复制链接,你需要配置服务器的防盗链功能(如 Nginx 或 Apache 的
rewrite规则),并使用 DedeCMS 的附件管理功能来上传文件,然后在模板中使用{dede:field.fileurl/}来调用,而不是直接填写外部链接。 - 下载统计:如果你需要统计每个下载地址的点击次数,可以在
download_article.htm模板中,将下载链接指向一个专门的统计脚本(如count.php?id=文章ID),该脚本在数据库中更新点击次数后,再header跳转到真正的下载地址。 - 样式美化:上面的模板是纯 HTML 结构,你需要配合 CSS 样式表 (
style.css) 来美化页面,让下载列表和详情页看起来更专业、更易用。 - 移动端适配:确保你的模板是响应式的,或者在移动端有专门的模板,以提供良好的用户体验。
通过以上四个步骤,你就可以在 DedeCMS 中创建一个功能完善、专业的下载页面模板了。
