核心标签:{dede:field name='pic'}
这是获取图片路径最核心、最常用的标签,它的工作原理是:读取当前文档(文章或栏目)的“图片摘要”字段。

页 (article_article.htm) 中使用
页,{dede:field name='pic'} 会直接获取这篇文章在后台设置的“图片摘要”的完整路径。
示例代码:
<img src="{dede:field name='pic'/}" alt="{dede:field.title/}" />
说明:
- 如何设置: 在后台编辑文章时,找到“高级选项” -> “图片摘要”,上传或填写一张图片的URL。
- 路径类型: 如果你的网站开启了“绝对路径”选项(在系统 -> 核心设置中),那么调用出来的就是完整的
http://...路径,如果未开启,则是相对于网站根目录的路径,如/uploads/allimg/...。
首页/列表页调用文章第一张图
这是最常见的需求之一:在首页、列表页或文章栏目页,调用文章内容中的第一张图片作为缩略图。

织梦CMS本身没有直接调用文章第一张图的标签,但可以通过自定义函数或使用现成的标签来实现,这里推荐两种最主流的方法。
使用 {dede:field.body/} + 正则表达式(推荐)
这是最灵活、最常用的方法,通过一个自定义函数 GetFirstImg() 来实现。
第一步:在 include/extend.func.php 文件中添加函数
打开你的网站根目录下的 include/extend.func.php 文件(如果这个文件不存在,就新建一个),在文件末尾添加以下PHP代码:

/**
* 获取文档body中的第一张图片路径
* @param string $body 文章内容
* @return string 第一张图片的路径,如果没有则返回默认图
*/
function GetFirstImg($body)
{
$preg = "/<img.*?src=[\'|\"](.*?)[\'|\"].*?[\/]?>/i";
preg_match_all($preg, $body, $match);
if (!empty($match[1][0])) {
// 如果开启了绝对路径,这里需要确保返回的是绝对路径
// 如果你的网站配置了将相对路径转为绝对路径,可以直接返回
return $match[1][0];
} else {
// 如果没有图片,可以返回一个默认图片路径
return '/default.jpg'; // 请将 /default.jpg 替换为你的实际默认图片路径
}
}
第二步:在模板中使用 {dede:field name='body' function='GetFirstImg(@me)'/}
你可以在首页、列表页等模板文件中,通过以下方式调用文章的第一张图。
示例代码(在首页列表循环中 arclist 或 list 标签内):
{dede:arclist typeid='' row='8' titlelen='30'}
<li>
<!-- 调用第一张图 -->
<img src="{dede:field name='body' function='GetFirstImg(@me)'/}" alt="{dede:field.title/}" />
<!-- 调用文章标题 -->
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:arclist}
代码解释:
{dede:field name='body'}:获取文章的完整内容。function='GetFirstImg(@me)':这是一个函数修饰符。@me:代表{dede:field name='body'}当前标签的值,也就是文章内容。GetFirstImg(...):将文章内容作为参数,传递给我们刚刚在extend.func.php中定义的函数。- 函数会处理内容并返回第一张图片的路径,最终替换掉整个标签。
使用第三方标签(如 likearticle)
有些织梦二次开发模板会提供自定义标签,likearticle,它可以方便地调用文章相关信息,包括第一张图,这种方法需要你的模板或插件支持,不是所有模板都通用。
示例代码(仅为示意,具体看模板文档):
{dede:likearticle row='5'}
<img src="[field:pic/]" alt="[field:title/]" />
{/dede:likearticle}
这种方式更简单,但通用性较差,需要根据你使用的具体模板或插件来调整。
调用栏目缩略图
如果你想在模板中调用当前栏目的缩略图,可以使用 typeid 属性来指定栏目ID,然后调用其缩略图。
示例代码:
{dede:arclist typeid='栏目ID' row='1'}
<!-- 调用栏目的缩略图,而不是文章的 -->
<img src="{dede:global.cfg_cmspath/}/uploads/{dede:type typeid='栏目ID'}[field:litpic/]{/dede:type}" alt="{dede:field.title/}" />
{/dede:arclist}
或者更简洁的方式(在栏目页直接调用):
{dede:field name='litpic'/}
这个标签在栏目模板(如 category_栏目ID.htm)中,可以直接获取当前栏目的缩略图。
织梦CMS的图片路径配置(重要!)
理解织梦如何处理路径,能帮你解决很多路径问题。
-
后台设置:
- 进入 后台 -> 系统 -> 系统基本参数 -> 核心设置。
- 找到 “是否使用绝对路径” 选项。
- “是”:所有图片、链接都会生成完整的
http://www.yoursite.com/...格式,适合移动端、小程序或被其他网站引用。 - “否”:生成相对路径,如
/uploads/allimg/...,适合传统的PC网站。
- “是”:所有图片、链接都会生成完整的
-
图片上传目录:
- 上传的图片默认存放在
/uploads/目录下,这个目录可以在后台设置中修改。 - 路径格式通常为:
/uploads/年/月/日/,/uploads/20251027/202510271234567.jpg。
- 上传的图片默认存放在
总结与最佳实践
| 场景 | 推荐标签/方法 | 说明 |
|---|---|---|
| 页 | {dede:field name='pic'/} |
调用后台“图片摘要”字段。 |
| 首页/列表页调用文章第一张图 | {dede:field name='body' function='GetFirstImg(@me)'/} |
最推荐,通过自定义函数实现,灵活且通用。 |
| 调用栏目缩略图 | {dede:field name='litpic'/} |
在栏目页或指定栏目时使用。 |
| 图片路径问题 | 检查后台“是否使用绝对路径”设置。 | 确保你需要的路径类型(绝对/相对)已正确配置。 |
给新手的建议:
- 优先使用方法一(
extend.func.php+GetFirstImg函数),这是最标准、最灵活的解决方案。 - 在修改模板前,务必备份原始模板文件。
- 如果图片路径不正确,首先去后台检查 “是否使用绝对路径” 这个核心设置。
