使用“图集”模型(最推荐、最标准)
这是DedeCMS内置的、专门为多图展示设计的功能,无需任何代码修改,非常方便。

适用场景
- 你需要发布一个文章,文章内容包含多张图片,并希望有图集浏览效果(如缩略图列表、点击放大、左右切换等)。
- 产品图集、活动照片、装修案例等。
操作步骤
第一步:创建图集类型的栏目
- 登录DedeCMS后台,进入【栏目管理】。
- 点击【增加顶级栏目】。
- 在弹出的表单中,填写栏目信息:
- 栏目名称:产品图集”。
- 栏目类型:选择“频道封面”。
- 模型:选择“图集”。
- 其他信息(如栏目目录、列表模板等)根据需要填写。
- 点击【确定】。
第二步:发布图集文章
-
进入【核心】->【内容发布】->【添加图集内容】。
-
选择你刚才创建的“产品图集”栏目。
(图片来源网络,侵删) -
填写文章标题、副标题、作者等基本信息。
-
关键步骤:添加图片
- 找到 ” 文本框(默认是编辑器模式)。
- 将鼠标光标定位在编辑器中,然后点击编辑器工具栏上的 “插入图集” 图标(通常是一个由几张小图片组成的图标)。
- 在弹出的图集上传窗口中:
- 你可以直接从本地上传多张图片。
- 也可以从媒体库中选择已有的图片。
- 上传或选择完成后,点击【开始上传】。
- 上传成功后,所有图片会出现在下方的列表中。
- 你可以为每张图片单独 “说明”,这个说明会作为图片的标题或描述显示在前台。
- 设置完成后,点击【确定】插入图片。
- 编辑器中会出现类似
{dede:img text='图片说明'} 图片地址 {/dede:img}的代码。
-
填写其他内容,如摘要、 tags等。
-
点击【保存】或【发布】。
(图片来源网络,侵删)
第三步:在前台调用和展示
DedeCMS默认的图集详情页模板(article_image.htm)已经内置了图集展示的JS效果(如幻灯片、灯箱等),你只需要确保你的模板文件正确调用了这些JS和CSS文件即可。
在首页或列表页调用图集缩略图:
如果你想在列表页或首页显示该图集的几张缩略图,可以使用DedeCMS的标签。
{dede:arclist typeid='你的栏目ID' row='10' titlelen='30'}
<li>
<a href="[field:arcurl/]">
<img src="[field:litpic/]" alt="[field:title/]" />
<!-- 下面是调用图集多张缩略图的核心代码 -->
<div class="album-thumbnails">
[field:id function="GetAlbumImages(@me, 3, 120, 90)"/]
</div>
</a>
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
</li>
{/dede:arclist}
标签解释:
[field:id function="GetAlbumImages(@me, 3, 120, 90)"/]是核心。@me:代表当前文章的ID。3:表示调用最多3张图片。120:缩略图的宽度。90:缩略图的高度。- 这个函数会输出类似
<img src='图片地址' width='120' height='90' />的HTML代码。
使用自定义表单(灵活,适合特定字段)
如果你不想创建新的栏目,而是在现有的普通文章(如“文章模型”)中,额外增加一个“多图上传”字段,那么可以使用自定义表单功能。
适用场景
- 你需要在现有的文章模型中增加一个多图字段,产品多视图”、“团队照片”等。
- 这个字段独立于文章内容,可以单独调用。
操作步骤
第一步:创建自定义字段
- 进入【核心】->【内容模型管理】。
- 点击你想要修改的模型后面的【管理字段】,文章模型”。
- 点击【增加字段】。
- 填写字段信息:
- 字段名称:
imglist(英文,不能有特殊字符) - 字段说明:
产品图片列表(在前台表单中显示的名称) - 字段类型:选择“多图片”。
- 默认值:留空。
- 显示方式:选择“后台文本框录入”,这样上传后你得到的是图片地址的文本,方便调用。
- 点击【保存】。
- 字段名称:
第二步:在后台发布文章时上传图片
- 发布】,选择一个使用了该模型的栏目。
- 你会发现文章编辑页面下方多出了你刚刚创建的“产品图片列表”字段。
- 点击该字段旁边的 “增加” 按钮,会弹出一个图片上传窗口。
- 上传你的图片,上传成功后,图片地址会自动填入下方的文本框中,多个图片地址会用英文逗号 分隔。
/uploads/202510/01/1.jpg,/uploads/202510/01/2.jpg,/uploads/202510/01/3.jpg
第三步:在前台调用和展示
你需要在模板文件中调用这个自定义字段。
在文章详情页调用:
打开文章详情页模板(通常是 article_article.htm),在需要显示图片的位置加入以下代码:
<h3>产品图片:</h3>
<div class="custom-image-list">
{dede:field name='imglist' runphp='yes'}
$images = explode(',', @me);
@me = '';
foreach($images as $img){
if(trim($img) != ''){
// 这里可以自定义HTML输出样式
@me .= '<img src="'.$img.'" alt="产品图片" style="width:200px; margin-right:10px;" />';
}
}
{/dede:field}
</div>
代码解释:
{dede:field name='imglist'/}:获取自定义字段imglist的值,即那个逗号分隔的字符串。runphp='yes':允许在标签内使用PHP代码。explode(',', @me):将字符串用逗号分割成一个数组。foreach($images as $img):遍历数组中的每一个图片地址。@me .= '...':将拼接好的HTML代码重新赋值给@me,最终输出。
在列表页/首页调用:
使用 arclist 标签,并通过 array 函数调用自定义字段。
{dede:arclist typeid='你的栏目ID' row='10' titlelen='30'}
<li>
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<!-- 调用自定义的多图字段,并显示第一张图作为代表 -->
[field:id runphp='yes']
$dsql = new Dedesql(false);
$arcRow = $dsql->GetOne("SELECT imglist FROM `dede_archives` WHERE id='@me'");
$images = explode(',', $arcRow['imglist']);
if(isset($images[0]) && trim($images[0]) != ''){
@me = '<img src="'.$images[0].'" alt="缩略图" />';
}else{
@me = '<img src="/default.jpg" alt="默认图" />';
}
[/field:id]
</li>
{/dede:arclist}
修改数据表和模板(最灵活,但最复杂)
这种方法不依赖DedeCMS的任何内置功能,直接修改数据库和模板,可以实现完全自定义的多图存储和调用逻辑。仅适合有PHP和MySQL基础的开发者。
适用场景
- 需要非常特殊的多图存储结构,例如每张图片都有独立的标题、描述、上传时间等复杂信息。
- 不想受限于DedeCMS的默认行为。
操作步骤(简述)
-
修改数据库:
- 在
dede_archives表中增加一个文本字段,如my_pics,用于存储JSON格式的图片信息。[{"url":"/img/1.jpg", "desc":"图1"}, {"url":"/img/2.jpg", "desc":"图2"}]。 - 或者,创建一个全新的数据表
dede_my_pics,与dede_archives表通过aid(文章ID)关联,每张图片占一条记录。
- 在
-
修改发布程序:
- 找到处理文章提交的PHP文件(通常在
/dede/目录下,如article_add.php)。 - 在文件中添加处理多图上传的代码,将图片信息存入你刚刚创建的数据库字段或表中,这通常涉及文件上传、路径处理、数据入库等操作。
- 找到处理文章提交的PHP文件(通常在
-
修改模板:
在需要显示图片的模板文件中,使用PHP代码查询数据库,获取图片数据,然后循环输出。
这种方法非常灵活,但开发成本高,且在DedeCMS升级时可能会被覆盖,不推荐普通用户使用。
总结与建议
| 方法 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|
| 图集模型 | 官方标准,无需代码,自带JS效果,最简单 | 必须创建专门的图集栏目,不够灵活 | ⭐⭐⭐⭐⭐ (强烈推荐) |
| 自定义表单 | 灵活,可在现有模型中添加,字段独立 | 需要手动编写PHP代码来调用和展示,无内置JS效果 | ⭐⭐⭐⭐ (非常推荐,适用性广) |
| 修改数据表 | 极度灵活,可定制任何复杂逻辑 | 开发复杂,有升级风险,不适合新手 | ⭐⭐ (仅限高级开发者) |
对于绝大多数用户来说,请优先选择方法一(图集模型),如果需要在普通文章里加几张图,再选择方法二(自定义表单),这两种方法已经能解决99%的多图展示需求。
