使用系统内置的 field 标签(最推荐、最简单)
DedeCMS 的文章模型(软件模型)中,有一个默认的字段叫做 filesize(文件大小),我们直接调用这个字段即可。

(图片来源网络,侵删)
适用场景:
- 页 (
article_article.htm) - 软件列表页 (
list_article.htm)
页显示文件大小
在 article_article.htm 模板文件中,您可以在需要显示文件大小的位置(例如下载按钮旁边)加入以下代码:
[field:filesize/]
示例: 假设您的下载按钮是这样的:
<a href="[field:link/]" target="_blank" class="downbtn">点击下载</a>
您可以修改为:

(图片来源网络,侵删)
<a href="[field:link/]" target="_blank" class="downbtn">点击下载</a> <span class="file-size">([field:filesize/])</span>
然后您可以在 CSS 文件中添加样式,让显示更美观:
.file-size {
font-size: 12px;
color: #666;
margin-left: 10px;
}
在软件列表页显示文件大小
在 list_article.htm 模板文件中,同样可以使用 field 标签来调用列表项中的 filesize 字段。
示例: 假设您的列表项循环代码是:
{dede:list pagesize='10'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:list}
```或日期后面加上文件大小:
```html
{dede:list pagesize='10'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span class="list-meta">
[field:pubdate function="MyDate('Y-m-d',@me)"/] |
大小:[field:filesize/]
</span>
</li>
{/dede:list}
对应的 CSS 样式:

(图片来源网络,侵删)
.list-meta {
font-size: 12px;
color: #999;
float: right;
}
使用自定义字段(更灵活、功能更强大)
如果您发现 filesize 字段不满足需求(您需要单位自动转换、或者想自定义字段名),或者您的软件模型里根本没有这个字段,那么使用自定义字段是最佳选择。
步骤 1:添加自定义字段
- 登录 DedeCMS 后台。
- 进入 [核心] -> 模型管理]。
- 找到并点击您正在使用的 [软件模型](通常是“软件”或您自定义的名称)。
- 在模型管理页面,点击 [字段管理] -> [添加新字段]。
- 在添加字段页面,填写以下信息:
- 字段名:
file_size(建议使用英文,不能有特殊字符) - 字段类型:
单行文本 - 字段提示:
软件大小(这个会在后台发布文章时显示) - 前台显示:
是(勾选) - 其他选项:可以根据需要设置,比如是否为必填项等。
- 字段名:
- 点击 [保存],系统会提示成功,并可能需要你进行“更新系统缓存”和“重新生成HTML”操作,按照提示操作即可。
步骤 2:在后台发布文章时填写大小
去发布一篇新的软件文章,在编辑页面的下方,您会看到一个新添加的“软件大小”输入框,在这里填入文件大小,5MB 或 1024KB。
步骤 3:在模板中调用自定义字段
调用自定义字段和方法一完全一样,只是把 filesize 换成您自定义的字段名 file_size。
页 (article_article.htm):**
[field:file_size/]
在列表页 (list_article.htm):
[field:file_size/]
使用辅助函数实现单位自动转换(高级用法)
用户输入的大小是 1024(单位是 KB),或者 1048576(单位是 B),我们希望前台能自动显示为 1MB,这样更直观,这可以通过编写一个自定义函数来实现。
步骤 1:创建自定义函数文件
- 在您的 DedeCMS 根目录下找到
include/helpers/文件夹。 - 新建一个名为
extend.helper.php的文件(如果已存在则无需新建)。 - 在
extend.helper.php文件中,添加以下 PHP 函数代码:
<?php
if(!defined('DEDEINC')) exit('Request Error!');
/**
* 格式化文件大小,自动转换单位
* @param int $filesize 文件大小,单位为字节
* @return string 格式化后的大小,如 1.5MB
*/
function GetFileSize($filesize)
{
if ($filesize >= 1073741824) {
$filesize = round($filesize / 1073741824 * 100) / 100 . ' GB';
} elseif ($filesize >= 1048576) {
$filesize = round($filesize / 1048576 * 100) / 100 . ' MB';
} elseif ($filesize >= 1024) {
$filesize = round($filesize / 1024 * 100) / 100 . ' KB';
} else {
$filesize = $filesize . ' B';
}
return $filesize;
}
?>
步骤 2:修改模型和模板
- 修改模型:按照 方法二 的步骤,添加一个名为
file_size_b的自定义字段,字段类型为数字,并且让用户在后台输入字节数(1048576)。 - 修改模板:在模板中调用这个新字段,并使用我们刚刚创建的函数。
页 (
article_article.htm):**{dede:field.file_size_b function="GetFileSize(@me)"/}
dede:field.file_size_b是调用自定义字段。function="GetFileSize(@me)"是核心,它会把当前字段的值 (@me) 作为参数传递给GetFileSize函数,并将函数的返回结果显示出来。
在列表页 (list_article.htm):
{dede:field.file_size_b function="GetFileSize(@me)"/}
这样,无论用户在后台输入多少字节,前台都会智能地转换为 KB, MB 或 GB 单位。
总结与对比
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
field |
最简单、最直接,无需任何额外设置。 | 功能单一,只能显示用户输入的原样内容。 | 快速实现,对格式没有特殊要求时。 |
| 自定义字段 | 非常灵活,可以自定义字段名和提示信息,功能强大。 | 需要手动添加字段,多一步操作。 | 需要更个性化的字段,或原系统字段不满足需求时。 |
| 辅助函数 | 自动化、智能化,能实现单位自动转换,用户体验最好。 | 步骤较多,需要修改文件和了解PHP函数。 | 对软件大小显示格式有严格要求,追求专业性的网站。 |
对于大多数用户来说,方法一已经足够,如果您需要更精细的控制,方法二是首选,如果您想让网站显得更专业、更“智能”,那么方法三是最佳方案。
