基础调用:文章内容中的第一张图
这是最常见的需求,比如在列表页调用文章缩略图,如果没有缩略图,则自动调用文章正文中的第一张图片。

(图片来源网络,侵删)
使用 GetOneImgUrl 函数(推荐)
这个函数专门用于获取文章内容中的第一张图片,非常方便。
语法:
{dede:field name='body' function='GetOneImgUrl(@me)'/}
参数说明:
@me:代表当前的字段值,在这里就是文章的bodyfunction='GetOneImgUrl(@me)':对body字段内容执行GetOneImgUrl函数处理。
示例(在列表页 list_article.htm 中):

(图片来源网络,侵删)
<li>
<a href="[field:arcurl/]">
<!-- 如果没有缩略图,则调用正文第一张图;有缩略图则显示缩略图 -->
<img src="{dede:field name='litpic'/}" onerror="this.src='{dede:field name='body' function='str_replace('/uploads/', '/uploads/', GetOneImgUrl(@me))'/}'" alt="[field:title function='html2text(@me)'/]" />
</a>
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
</li>
代码解析:
onerror="this.src='...'":这是一个非常实用的技巧,当<img>标签的src指向的图片加载失败时(比如缩略图为空),就会自动执行onerror里的代码,去调用正文中的第一张图。str_replace('/uploads/', '/uploads/', GetOneImgUrl(@me)):这里加了一个str_replace是为了兼容某些环境下图片路径可能不完整的问题,确保能正确找到图片,在大多数情况下,可以直接使用GetOneImgUrl(@me)。
调用缩略图
调用文章后台设置的缩略图是最直接的方式。
调用缩略图路径
直接使用 litpic 字段即可。
语法:

(图片来源网络,侵删)
[field:litpic/]
示例:
<img src="[field:litpic/]" alt="[field:title function='html2text(@me)'/]" />
调用缩略图并自动补全域名
litpic 返回的是相对路径(如 /uploads/2025/10/xxx.jpg),直接使用可能在某些页面(如首页)无法显示,需要补全网站域名。
语法:
[field:litpic function='str_replace("..", "", "@me")'/]
或者使用更稳妥的:
{dede:global name='cfg_basehost'/}[field:litpic/]
示例:
<img src="{dede:global name='cfg_basehost'/}[field:litpic/]" alt="[field:title function='html2text(@me)'/]" />
代码解析:
{dede:global name='cfg_basehost'/}:这是DedeCMS的全局变量,会输出你网站的基础域名,如http://www.yoursite.com。[field:litpic/]:是相对路径,两者拼接起来就是完整的图片URL。
调用自定义字段中的图片
如果你的文章模型中添加了自定义字段来存储图片,调用方法也很简单。
假设你添加了一个名为 product_img 的自定义字段,类型为“图片”。
调用单张图片
语法:
[field:product_img/]
同样,建议补全域名:
{dede:global name='cfg_basehost'/}[field:product_img/]
调用多张图片(图集)
如果自定义字段类型是“多图”,它存储的值通常是 图片1|图片2|图片3 这样的格式,你需要将其分割成数组,然后循环输出。
语法:
{dede:field name='product_img' function='explode("|", @me)'}
<img src="{dede:global name='cfg_basehost'/}[field:autotemplet/]" alt="产品图片" />
{/dede:field}
代码解析:
function='explode("|", @me)':将product_img字段的值按 分割成一个数组。[field:autotemplet/]:在循环中,这个标签会自动指向数组中的每一个元素(即每张图片的路径)。
调用栏目缩略图
调用当前栏目的缩略图,通常用于频道页或列表页的头部。
语法:
{dede:field name='typedir'/} // 调用栏目目录(带域名)
{dede:field.seotext/} // 调用栏目简介(可能包含图片)
{dede:global name='cfg_basehost'/}{dede:field name='typedir'/} // 组合使用
更直接的方法是调用栏目的 typelitpic 字段,但这个字段默认不存在,你需要:
- 在
dede_arctype表中添加一个typelitpic字段。 - 修改栏目编辑模板,让用户可以上传栏目缩略图。
- 在模板中调用:
{dede:global name='cfg_basehost'/}[field:typelitpic/]
调用外部图片(广告、友情链接等)
DedeCMS有专门的自定义标记来调用这些内容。
调用广告图片
在后台“广告管理”中添加广告,然后在模板中调用。
语法:
{dede:myad name='广告位标识'/}
示例:
假设你在后台添加了一个广告位,标识为 topbanner,那么在模板中写:
{dede:myad name='topbanner'/}
调用友情链接Logo
语法:
{dede:flink type='image'/}
参数:
type='image':只显示带Logo的链接。row='10':显示10个,len='24'`:标题长度限制为24个字符。
示例:
<div class="friend-links">
<h3>友情链接</h3>
<ul>
{dede:flink type='image' row='10' titlelen='24'}
<li><a href="[field:url/]" target="_blank" title="[field:name/]">[field:name/]</a></li>
{/dede:flink}
</ul>
</div>
综合实例:一个常见的列表页布局
这是一个结合了多种调用技巧的列表页 list_article.htm 示例。
<ul class="article-list">
{dede:list pagesize='10'}
<li class="clear">
<!-- 左侧图片:优先调用缩略图,失败则调用正文第一张图 -->
<div class="img-box">
<a href="[field:arcurl/]">
<img src="{dede:global name='cfg_basehost'/}[field:litpic/]"
onerror="this.src='{dede:global name='cfg_basehost/'}{dede:field name='body' function='str_replace("/../", "", GetOneImgUrl(@me))'/}'"
alt="[field:title function='html2text(@me)'/]" />
</a>
</div>
<!-- 右侧标题、简介等信息 -->
<div class="text-box">
<h2><a href="[field:arcurl/]">[field:title/]</a></h2>
<p class="desc">[field:description function='cn_substr(@me, 120)'/]...</p>
<div class="info">
<span class="date">[field:pubdate function='MyDate('Y-m-d', @me)'/]</span>
<span class="views">阅读([field:click/])</span>
<span class="author">作者:[field:writer/]</span>
</div>
</div>
</li>
{/dede:list}
</ul>
<!-- 分页 -->
<div class="page-nav">
{dede:pagelist listsize='4'/}
</div>
| 调用场景 | 标签/代码 | 说明 |
|---|---|---|
| 调用正文第一张图 | {dede:field name='body' function='GetOneImgUrl(@me)'/} |
最常用,兼容性好,建议配合 onerror 使用。 |
| 调用文章缩略图 | [field:litpic/] |
直接调用后台设置的缩略图。 |
| 补全图片域名 | {dede:global name='cfg_basehost'/}[field:litpic/] |
解决相对路径在不同页面显示问题。 |
| 调用自定义单图 | [field:自定义字段名/] |
调用模型中添加的单图字段。 |
| 调用自定义多图 | {dede:field name='字段名' function='explode("|", @me)'}...{/dede:field} |
循环输出多图字段中的图片。 |
| 调用广告图 | {dede:myad name='广告位标识'/} |
调用后台广告管理中的图片。 |
| 调用友情链接Logo | {dede:flink type='image'/} |
调用友情链接中的Logo图片。 |
希望这份详细的指南能帮助你完全掌握在DedeCMS中调用图片的各种方法!
