核心概念:织梦如何获取缩略图?
织梦文章列表的缩略图,其数据源主要来自三个地方,按优先级从高到低:

- 文章自定义字段:这是最常用、最可靠的方法,你在发布文章时,通过“附加属性”或“自定义字段”功能上传或填写一张图片地址。
- 第一张图:如果你没有设置自定义缩略图,织梦可以自动抓取文章正文(
body字段)中的第一张<img>标签作为缩略图。 - 默认图片:如果以上两者都没有,则显示一张你预设好的默认图片。
下面我们围绕这三个核心方法展开。
使用文章自定义字段(推荐)
这是最规范、最可控的方法,适合所有场景。
步骤 1:添加自定义字段
- 进入后台:登录织梦后台。
- 找到模型:点击
核心->内容模型管理。 - 选择模型:点击你网站文章所使用的模型,通常是“文章模型”。
- 添加字段:
- 在字段管理页面,点击
增加新字段。 - 字段名:填写
litpic(这是织梦默认的字段名,如果已有则无需添加) 或者你自己的,如listpic。 - 字段类型:选择
图片(上传)。 - 字段提示:填写
列表缩略图,这样在前台发布文章时,编辑器里会提示你。 - 默认值:可以留空,也可以填写一张默认图片的地址(如
/images/default.jpg)。 - 保存。
- 在字段管理页面,点击
步骤 2:在前台发布文章时上传图片
当你发布或编辑文章时,会在编辑器下方看到“列表缩略图”的选项,点击上传按钮,选择一张图片即可,这张图片的地址就会被保存在数据库的 litpic 字段中。
步骤 3:修改列表页模板
这是最关键的一步,你需要找到并修改你的列表页模板文件。

-
找到模板文件:模板文件通常位于
/templets/你的模板文件夹/目录下,列表页模板文件名通常是list_article.htm。 -
编辑模板:用代码编辑器(如 VS Code, Sublime Text, Notepad++)打开
list_article.htm。 -
找到循环标签:在模板中找到织梦的循环标签,通常是:
{dede:arclist} ... 循环体内的内容 ... {/dede:arclist} -
在循环体内添加缩略图代码:在
{dede:arclist}和{/dede:arclist}之间,你希望显示缩略图的位置,添加以下代码:<li> <a href="[field:arcurl/]" title="[field:title/]"> <!-- 这里是缩略图代码 --> <img src="[field:litpic/]" alt="[field:title/]" /> </a> <h3><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></h3> </li>代码解释:
[field:litpic/]:这是调用文章自定义的缩略图地址,它会直接输出你在后台上传的图片路径。[field:title/]:这是文章标题,我们把它放在img标签的alt属性中,这有利于SEO。[field:arcurl/]:这是文章的链接地址。
-
保存模板:保存修改后的
list_article.htm文件,然后到后台的生成->更新主页HTML或更新栏目HTML中,重新生成你的列表页。
你的列表页应该就能正常显示你在后台上传的缩略图了。
自动调用文章内容第一张图
如果你不想每次都手动上传缩略图,可以让织梦自动抓取文章正文的第一张图。
步骤 1:确保文章有图
这个方法的前提是你的文章内容( 同样是修改 代码解释: 缺点: 一个健壮的系统应该有兜底方案,我们可以将方法一和方法二结合,并加入默认图片,这样,即使没有设置自定义缩略图,文章也没有内容图,也能显示一张漂亮的默认图。 这是最常用、最完善的代码,强烈推荐使用。 代码解释: 你需要对获取到的图片进行裁剪或缩放,织梦有一个非常方便的标签 修改缩略图代码: 结合完整方案的写法: 这样,你所有的缩略图都会被统一处理成 对于大多数网站,使用“方法三:结合默认图片”的方案,并用 body)中至少包含一张 <img>
步骤 2:修改列表页模板
list_article.htm 文件,但这次我们使用不同的调用标签。<li>
<a href="[field:arcurl/]" title="[field:title/]">
<!-- 这里是自动调用正文第一张图的代码 -->
<img src="{dede:field name='body' runphp='yes'}
$str = @me;
$preg = '/<img.*?src="(.*?)".*?>/is';
preg_match_all($preg, $str, $matches);
@me = $matches[1][0]; // 获取第一张图的src
{/dede:field}" alt="[field:title/]" />
</a>
<h3><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></h3>
</li>
{dede:field name='body' runphp='yes'}...{/dede:field}:这个标签会获取文章的body内容,并通过runphp='yes'属性允许我们在其中执行PHP代码。preg_match_all:这是一个正则表达式函数,用于在文章内容中查找所有符合<img ... src="..." ...>模式的图片。$matches[1][0]:$matches[1]数组存放的是所有匹配到的src地址,[0]则取第一个,这样就实现了获取第一张图片的目的。
$matches[1][0]会是空的,img标签的src属性无效,会显示一个破损的图片图标。
结合默认图片(最完善的方案)
修改列表页模板(推荐写法)
<li>
<a href="[field:arcurl/]" title="[field:title/]">
<!-- 结合自定义字段、正文第一张图和默认图片的完整代码 -->
<img src="
{dede:field name='litpic' runphp='yes'}
if(@me == '') {
// 如果自定义缩略图为空,则尝试获取正文第一张图
$str = @me;
$preg = '/<img.*?src="(.*?)".*?>/is';
preg_match_all($preg, $str, $matches);
if(isset($matches[1][0])) {
@me = $matches[1][0];
} else {
// 如果正文也没有图,则使用默认图片
@me = '/images/default.jpg'; // 请替换成你的默认图片路径
}
}
{/dede:field}" alt="[field:title/]" />
</a>
<h3><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></h3>
</li>
{dede:field name='litpic'}:我们依然从litpic字段获取数据。if(@me == ''):判断获取到的缩略图地址是否为空。body里找第一张图。/images/default.jpg。runphp中完成,非常高效和智能。
常见问题与解决方案
为什么我设置了缩略图,但前台不显示?
list_article.htm 中是否正确使用了 [field:litpic/]
http://...),确保你的网站域名配置正确,如果是相对路径,确保网站根目录正确。litpic,并且文章已经成功保存了这个字段的值。缩略图尺寸不一,页面布局很乱怎么办?
{dede:img} 来实现这个功能。<!-- 原始代码 -->
<img src="[field:litpic/]" alt="[field:title/]" />
<!-- 修改后,限制宽高为 200x150,并自动裁剪 -->
{dede:img text='[field:title/]' width='200' height='150'}
[field:litpic/]
{/dede:img}
{dede:img} 标签参数:
width:缩略图宽度。height:缩略图高度。text:图片的alt文本。autocut='yes':自动裁剪,会从图片中心开始截取指定大小的区域,保证图片填满容器,不会变形。强烈推荐加上此参数。<a href="[field:arcurl/]" title="[field:title/]">
{dede:img text='[field:title/]' width='200' height='150' autocut='yes'}
{dede:field name='litpic' runphp='yes'}
if(@me == '') {
$str = @me;
$preg = '/<img.*?src="(.*?)".*?>/is';
preg_match_all($preg, $str, $matches);
if(isset($matches[1][0])) {
@me = $matches[1][0];
} else {
@me = '/images/default.jpg';
}
}
{/dede:field}
{/dede:img}
</a>
200x150 像素,并且自动裁剪,页面会非常整齐。
方法
优点
缺点
适用场景
自定义字段
可控性强,图片质量高,加载快
需要手动上传
对图片有要求,追求效率和质量的网站
自动调用正文图
自动化,无需手动操作
不可控,可能加载大图,可能没有图
内容为主,图片为辅,对缩略图要求不高的博客
结合默认图
最完善,最健壮,有兜底方案
代码稍复杂
强烈推荐,几乎所有商业网站都采用这种方案
{dede:img} 标签进行尺寸控制,是解决织梦文章列表缩略图问题的最佳实践。
