- 单个下载地址:文章只有一个下载文件,直接显示链接。
- 多个下载地址:文章提供多个下载源(如不同服务器、不同格式),需要列表展示。
下面我将详细讲解这两种情况的实现方法,并提供完整的代码示例。

(图片来源网络,侵删)
准备工作:后台设置
在编写模板之前,请务必确保后台已经正确设置了下载字段的参数。
- 进入后台:登录织梦CMS后台。
- 找到模型:进入
[核心]->模型管理],选择你正在使用的模型(文章模型”)。 - 添加/编辑字段:
- 如果你的模型里没有下载地址字段,请点击
[增加字段]。 - 如果已有,请点击
[管理字段]找到对应的字段(如downloadurl)。 - 字段名称:填写
downloadurl(这是最常用的,也可以自定义,但模板代码要对应)。 - 字段类型:选择
多行文本。不要选择“文件”或“图片”,因为我们需要的是URL地址,而不是上传文件。 - 字段长度:根据需要设置,
255。 - 数据保存格式:选择
**文本格式**。 - 字段提示:填写“请输入下载地址,多个地址请用回车(Enter)分隔。”,方便其他编辑者理解。
- 保存。
- 如果你的模型里没有下载地址字段,请点击
单个下载地址模板
如果你的下载模型里只填写了一个地址,或者你只想显示第一个地址,可以使用这个简单的方法。
模板代码
在你的文章模板文件(通常是 templets/default/article_article.htm)中,加入以下代码:
{dede:field name='downloadurl' runphp='yes'}
if (@me != '') {
@me = "<div class='download-box'><span class='label'>下载地址:</span><a href='" . @me . "' target='_blank' class='download-link'>点击下载</a></div>";
} else {
@me = "";
}
{/dede:field}
代码解析
{dede:field name='downloadurl'}:这是调用名为downloadurl的字段内容。runphp='yes':允许在模板中执行PHP代码。if (@me != ''):判断downloadurl字段是否为空,如果为空,则不显示任何内容。@me = "...":如果不为空,就将@me(即字段内容)用一段HTML代码包裹起来,美化显示。target='_blank':让链接在新窗口中打开,避免用户离开当前页面。
效果
如果后台填写了 https://example.com/file.zip,前台将显示为:

(图片来源网络,侵删)
<div class="download-box">
<span class="label">下载地址:</span>
<a href="https://example.com/file.zip" target="_blank" class="download-link">点击下载</a>
</div>
多个下载地址模板(推荐)
这是最常用且最灵活的方式,用户在后台用回车分隔多个下载地址,前台会自动解析成列表。
模板代码
在你的文章模板文件中,加入以下代码:
{dede:field name='downloadurl' runphp='yes'}
if (@me != '') {
// 1. 将回车符替换为特定的分隔符,如 ||||
$urls = str_replace("\r\n", "||||", @me);
// 2. 按分隔符分割字符串,得到一个数组
$url_array = explode("||||", $urls);
// 3. 开始构建HTML
$html = '<div class="download-list">';
$html .= '<h3>下载地址</h3>';
$html .= '<ul>';
// 4. 遍历数组,为每个地址生成一个列表项
foreach ($url_array as $key => $url) {
if (trim($url) != '') { // 确保地址不为空
$key_num = $key + 1; // 下载序号从1开始
$html .= "<li><span class='num'>{$key_num}.</span><a href='" . trim($url) . "' target='_blank' class='url'>{$url}</a></li>";
}
}
$html .= '</ul>';
$html .= '</div>';
// 5. 将最终生成的HTML赋值给 @me,以便在模板中显示
@me = $html;
} else {
@me = ""; // 如果字段为空,则不显示任何内容
}
{/dede:field}
代码解析
str_replace("\r\n", "||||", @me):织梦后台用回车换行来分隔多个地址,\r\n就是回车换行的代码,我们先把它替换成一个不常用的字符串 ,方便下一步分割。explode("||||", $urls):使用explode函数,按照 这个分隔符,把一整段字符串切割成一个数组(['https://a.com/file.zip', 'https://b.com/file.zip'])。foreach ($url_array as $key => $url):遍历这个数组。trim($url):在循环中,使用trim()函数清除每个地址前后的空格,避免用户误输入空格导致链接失效。@me = $html:将循环中拼接好的HTML代码最终赋值给@me,模板引擎会将其输出。
效果
如果后台填写了如下内容:
https://server1.com/file.zip
https://server2.com/file.zip
前台将显示为:

(图片来源网络,侵删)
<div class="download-list">
<h3>下载地址</h3>
<ul>
<li>
<span class="num">1.</span>
<a href="https://server1.com/file.zip" target="_blank" class="url">https://server1.com/file.zip</a>
</li>
<li>
<span class="num">2.</span>
<a href="https://server2.com/file.zip" target="_blank" class="url">https://server2.com/file.zip</a>
</li>
</ul>
</div>
CSS 样式建议
为了让下载地址更美观,你可以在你的CSS文件(如 /templets/default/style/dedecms.css)中添加以下样式:
/* 下载地址容器 */
.download-box, .download-list {
margin: 20px 0;
padding: 15px;
border: 1px solid #e5e5e5;
background-color: #f9f9f9;
border-radius: 4px;
}
/* 下载地址列表标题 */
.download-list h3 {
margin: 0 0 10px 0;
padding-bottom: 8px;
border-bottom: 1px dashed #ccc;
font-size: 16px;
color: #333;
}
/* 下载地址列表 */
.download-list ul {
list-style-type: none;
padding-left: 0;
margin: 0;
}
.download-list li {
margin-bottom: 8px;
line-height: 1.6;
}
/* 下载序号 */
.download-list .num {
display: inline-block;
width: 20px;
height: 20px;
line-height: 20px;
text-align: center;
background-color: #007bff;
color: #fff;
border-radius: 50%;
margin-right: 10px;
font-size: 12px;
}
/* 下载链接 */
.download-list .url, .download-link {
color: #007bff;
text-decoration: none;
word-break: break-all; /* 防止长链接撑破布局 */
}
.download-list .url:hover, .download-link:hover {
text-decoration: underline;
}
/* 标签样式 */
.download-box .label {
font-weight: bold;
margin-right: 10px;
}
- 后台设置:将下载字段设置为“多行文本”类型。
- 单个地址:使用简单的
if判断和HTML包裹即可。 - 多个地址:使用
str_replace+explode+foreach的组合,这是处理此类问题的标准模板代码。 - 美化:通过添加CSS类和样式,让下载区域在页面上更醒目、更美观。
希望这份详细的教程能帮助你完美地实现织梦CMS的下载地址功能!
