第一步:在后台添加自定义图片字段
这是最关键的一步,确保字段的类型设置正确。

(图片来源网络,侵删)
进入模型管理
- 登录你的 DedeCMS 后台。
- 在左侧菜单栏,找到 【核心】 -> 模型管理】。
- 你会看到系统默认的几个模型,文章”、“图集”等,点击你想要添加字段的模型后面的 【字段管理】。
- 例如:如果你想在普通文章中添加一个产品图片,就点击 【文章】 模型后面的 【字段管理】。
添加新字段
-
进入字段管理页面后,点击右上角的 【添加新字段】 按钮。
-
在弹出的表单中,填写以下关键信息:
- 字段名称:
imgpic(这是数据库中的字段名,建议用英文或拼音,不要用特殊字符) - 字段提示:
产品图片(这是在后台发布文章时,显示给作者看的提示文字) - 字段类型: 【选择一项】 -> 【图片(单张)】 (这是最重要的选项!)
- 默认值: 留空
- 字段大小: 60 (后台输入框的宽度)
- 最大长度: 255 (数据库字段最大长度)
- 是否为空: 0 (不允许为空)
- 后台调用类型: 【仅允许上传图片】
- 字段名称:
-
勾选 【使字段可以在列表页内容模板中使用】,这个选项非常重要,决定了你能否在前台模板中调用这个字段。
-
点击 【保存】 按钮。
(图片来源网络,侵删)
至此,后台的自定义图片字段就添加完成了。
第二步:在前台模板中调用字段
添加完字段后,你需要在前台的模板文件中使用 DedeCMS 的标签来调用它,主要有两种调用场景:列表页 和 内容页。
在列表页 (list_*.htm) 调用
在列表页,你可能想在文章列表的摘要旁边显示一张缩略图。
假设你的自定义字段名为 imgpic。

(图片来源网络,侵删)
方法 A:使用 arclist
arclist 是调用文章列表最常用的标签。
{dede:arclist row='10' titlelen='30'}
<li>
<!-- 调用自定义图片字段 -->
<img src="[field:imgpic/]" alt="[field:title/]" width="100" height="100" />
<!-- 调用文章标题 -->
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:arclist}
代码解释:
[field:imgpic/]: 这就是调用你自定义的imgpic字段的核心标签,它会直接输出图片在后台上传后保存的路径。- 注意:如果某篇文章没有上传这张图片,
[field:imgpic/]将会输出空,导致<img>标签的src属性为空,图片无法显示,为了更好的用户体验,建议使用if判断。
优化版(带 if 判断):
{dede:arclist row='10' titlelen='30'}
<li>
<!-- 使用 if 判断,imgpic 字段不为空,则显示图片 -->
[field:imgpic runphp='yes']
if(@me == '') @me = '';
else @me = '<img src="' . @me . '" alt="' . $this->Fields['title'] . '" width="100" height="100" />';
[/field:imgpic]
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:arclist}
runphp='yes': 表示开启 PHP 解析。if(@me == '') @me = '';: 如果字段值为空,就输出空字符串。else @me = '...';: 如果字段值不为空,就拼接成一个完整的<img>标签并赋值给@me。
页 (article_*.htm) 调用
页,调用自定义字段非常简单。
假设你的自定义字段名为 imgpic。
方法 A:直接调用
<h1>{dede:field.title/}</h1>
<!-- 调用自定义图片字段 -->
<img src="{dede:field.imgpic/}" alt="{dede:field.title/}" />
<div>
{dede:field.body/}
</div>
代码解释:
{dede:field.imgpic/}: 在内容页中,直接使用field.字段名的格式即可调用。
方法 B:使用 if 判断(推荐)
和列表页一样,为了防止图片不存在导致页面错乱,建议加上判断。
<h1>{dede:field.title/}</h1>
<!-- 使用 if 判断 -->
{dede:field.imgpic runphp='yes'}
if(@me != ''){
@me = '<img src="' . @me . '" alt="' . $this->Fields['title'] . '" style="max-width:600px;" />';
}else{
@me = '<p>暂无图片</p>';
}
{/dede:field.imgpic}
<div>
{dede:field.body/}
</div>
- 这个判断逻辑更完整:如果图片存在,就显示图片;如果不存在,就显示一段文字提示(如“暂无图片”),这样页面会更美观。
常见问题与注意事项
-
为什么图片不显示?
- 字段名错误:检查模板中的
[field:imgpic/]或{dede:field.imgpic/}是否与后台添加的字段名完全一致。 - 未勾选选项:检查后台添加字段时,是否勾选了 【使字段可以在列表页内容模板中使用】。
- 字段类型错误:确认后台添加的字段类型是 【图片(单张)】。
- 文章未上传图片:去后台编辑对应文章,确保已经上传并保存了该自定义图片字段。
- 字段名错误:检查模板中的
-
调用出的图片路径是相对路径,前台无法显示怎么办?
- 有时直接调用出来的路径是
/uploads/allimg/2025/xx/xxx.jpg这样的相对路径,在某些情况下可能会找不到图片。 - 解决方案:使用
cfg_cmspath或cfg_basehost变量来补全路径。
列表页优化:
[field:imgpic runphp='yes'] if(@me != ''){ @me = '<img src="' . $cfg_cmspath . '/' . @me . '" alt="' . $this->Fields['title'] . '" />'; } [/field:imgpic]内容页优化:
{dede:field.imgpic runphp='yes'} if(@me != ''){ @me = '<img src="' . $cfg_cmspath . '/' . @me . '" alt="' . $this->Fields['title'] . '" />'; } {/dede:field.imgpic} - 有时直接调用出来的路径是
-
需要调用多张图片(图集)怎么办?
- 如果需要在后台上传多张图片,第一步的字段类型应该选择 【图片(多张)】。
- 调用时需要使用
loop标签来遍历所有图片。 - 示例代码:
{dede:field name='imgpic' runphp='yes'} if(@me != ''){ $images = explode(';', @me); $count = count($images); $output = ''; for($i=0; $i<$count-1; $i++){ $output .= '<img src="' . $cfg_cmspath . '/' . $images[$i] . '" alt="" />'; } @me = $output; }else{ @me = '暂无图集'; } {/dede:field.name}
希望这份详细的教程能帮助你成功在 DedeCMS 5.7 中调用自定义图片字段!
