使用官方推荐的自定义模型(最灵活、最强大)
这是处理复杂列表需求(比如不同栏目显示不同字段)的最佳方法,它允许你为列表项添加自定义的图片字段。

(图片来源网络,侵删)
步骤 1:创建自定义模型
- 登录后台:进入DedeCMS后台管理。
- 进入模型管理:在顶部菜单栏,找到
核心->内容模型管理。 - 添加新模型:点击
增加新模型。- 模型名称:填写一个你容易识别的名字,
带图片的列表。 - 模型表:系统会自动生成一个,如
dede_addonarticle2(后面的数字是递增的),无需修改。 - 字段列表:点击
保存,然后点击字段管理。
- 模型名称:填写一个你容易识别的名字,
- 添加图片字段:
- 在字段管理页面,点击
增加新字段。 - 字段名称:
litpic(这是DedeCMS默认缩略图的字段名,复用它可以简化模板调用)。 - 字段标识:
litpic(与字段名保持一致)。 - 数据类型:选择
多媒体。 - 默认值:可以留空,或者设置一个默认图片路径。
- 上传目录:设置为
/uploads/default/或你自定义的目录。 - 其他选项:根据需要设置,比如是否允许为空等。
- 点击
保存。
- 在字段管理页面,点击
步骤 2:为栏目选择模型
- 进入栏目管理:在
频道->栏目管理中,找到你需要显示图片的栏目。 - 修改栏目:点击该栏目后面的
修改。 - 选择模型:在
常规选项标签页下,找到内容模型,选择你刚刚创建的带图片的列表模型。 - 保存:点击
确定保存。
步骤 3:发布文章时上传图片
当你在这个栏目下发布或修改文章时,你会发现文章编辑页面上多了一个“缩略图”的选项,在这里上传你想要在列表中显示的图片即可。
步骤 4:修改首页模板调用代码
这是最关键的一步,你需要修改首页的模板文件(通常是 index.htm)。
-
找到列表调用标签:在模板中找到类似
{dedarclist}的标签,它可能长这样:{dedarclist typeid='1' row='8' titlelen='30'} <li> <a href='[field:arcurl/]'>[field:title/]</a> </li> {/dedarclist}typeid='1':调用指定栏目ID下的文章。row='8':调用8条记录。titlelen='30'长度限制为30个字符。
-
添加图片调用代码:在
{dedarclist}标签内部,使用[field:litpic/]来调用你上传的图片,修改后的代码如下:
(图片来源网络,侵删){dedarclist typeid='1' row='8' titlelen='30'} <li> <!-- 调用缩略图,并添加链接 --> <a href='[field:arcurl/]'> <img src='[field:litpic/]' alt='[field:title/]' /> </a> <!-- 调用标题 --> <a href='[field:arcurl/]'>[field:title/]</a> </li> {/dedarclist}
代码解释:
[field:litpic/]:这是调用文章缩略图地址的标签。alt='[field:title/]':为图片添加alt属性,这有利于SEO,显示图片的标题。- 将图片和标题都包裹在
<a href='[field:arcurl/]'>中,这样点击图片或标题都能跳转到文章详情页。
使用默认的“带图片的列表”频道(最简单)
如果你的需求比较简单,只是想在首页显示一个包含图片的列表,可以使用DedeCMS自带的“带图片的列表”频道。
步骤 1:创建“带图片的列表”频道
- 进入频道管理:在
频道->频道管理中,点击增加顶级频道。 - 选择频道类型:在
频道类型中,选择带图片的列表。 - 填写信息:
- 栏目名称:
首页图文推荐。 - 栏目目录:
indexpic。 - 选择栏目:在
选择栏目中,勾选你想要在这个频道中显示的栏目。 - 其他选项根据需要填写。
- 栏目名称:
- 保存:点击
确定。
步骤 2:修改首页模板
在首页模板 index.htm 中,使用 {dede:flink/} 的类似语法来调用这个新创建的频道。
{dede:imglist typeid='你的栏目ID' row='8'}
<dd>
<a href="[field:arcurl/]">
<img src="[field:picname/]" alt="[field:title/]" />
<span>[field:title/]</span>
</a>
</dd>
{/dede:imglist}
注意:

(图片来源网络,侵删)
- 这个方法会创建一个独立的频道,调用方式与
{dedarclist}略有不同。 [field:picname/]是这个频道中调用图片地址的标签。- 这种方法不如方法一灵活,因为它通常用于调用一个固定栏目的图片列表。
直接调用文章正文中的第一张图片(最快捷,但不推荐)
如果你不想上传缩略图,而是希望自动提取文章内容(body字段)中的第一张图片作为列表图,可以使用这个方法。注意:此方法需要修改系统文件,有一定风险,且对SEO不友好。
步骤 1:修改 /include/taglib/arclist.lib.php 文件
-
用FTP或服务器文件管理器,打开
include/taglib/arclist.lib.php文件。 -
找到大约第760行左右的
$fields['litpic'] = $row['litpic'];这一行。 -
在这行代码的下面,添加以下PHP代码:
// 如果没有缩略图,则获取文章内容中的第一张图片 if(empty($fields['litpic']) || $fields['litpic'] == "/images/defaultpic.gif"){ $body = $row['body']; // 获取文章内容 $preg = "/<img.*?src=[\'|\"](.*?)[\'|\"].*?[\/]?>/i"; // 匹配img标签的正则表达式 preg_match_all($preg, $body, $match); if(isset($match[1][0])){ $fields['litpic'] = $match[1][0]; // 将第一张图片地址赋值给litpic字段 } else { $fields['litpic'] = "/images/defaultpic.gif"; // 如果没有找到图片,使用默认图片 } }
步骤 2:修改首页模板
首页模板的调用代码和方法一完全一样,因为我们是“骗”系统让它认为文章已经有 litpic 字段了。
{dedarclist typeid='1' row='8' titlelen='30'}
<li>
<a href='[field:arcurl/]'>
<img src='[field:litpic/]' alt='[field:title/]' />
</a>
<a href='[field:arcurl/]'>[field:title/]</a>
</li>
{/dedarclist}
此方法的缺点:
- 性能影响:每次调用列表,系统都需要去解析文章内容,会增加服务器负担。
- 图片尺寸不一:直接调用正文中的图片,尺寸可能很大,导致页面布局混乱。
- SEO风险:如果正文第一张图片与文章主题无关,用作列表图对SEO不利。
- 修改核心文件:升级DedeCMS时,此修改可能会被覆盖。
总结与推荐
| 方法 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
| 自定义模型 | 最灵活、最规范、性能最好、对SEO最友好 | 需要额外设置模型和栏目 | 绝大多数情况下的首选,特别是商业网站或对要求较高的项目。 |
| 带图片列表频道 | 设置简单,官方支持 | 不够灵活,调用方式受限 | 需要在首页展示一个固定的、独立的图片推荐区域。 |
| 提取正文图片 | 无需额外操作,最“懒”的方法 | 性能差、图片尺寸难控制、有SEO风险、修改核心文件 | 不推荐,仅适用于临时测试或对性能和SEO要求极低的个人博客。 |
强烈建议你使用方法一(自定义模型),这是最专业、最稳定、最符合DedeCMS设计思想的做法,虽然前期设置多花几分钟,但后期维护和扩展会非常方便。
