“自定义图片”这个功能,在 DedeCMS 后台通常被称为 “自定义图集”,它允许你在编辑文章时,不局限于上传一张封面图,而是上传一组图片,并以幻灯片、缩略图列表等形式在文章内容页展示。

(图片来源网络,侵删)
这个功能的核心实现依赖于以下几个关键文件和目录:
核心处理文件 (PHP)
这些文件负责处理图集的上传、数据保存和逻辑判断。
/include/helpers/archive.helper.php
这是 最重要的文件,当你在后台保存一篇包含自定义图集的文章时,DedeCMS 会调用这个文件里的 InsertUpload 函数。
- 核心功能:
- 接收从前端传递过来的图片数据(通常是多个图片的路径)。
- 将这些图片信息(如原始路径、缩略图路径、图片描述等)进行序列化处理。
- 将序列化后的字符串存储到数据库的
dede_addonarticle(附加表) 或dede_archives(主表) 的body或litpic字段中(具体取决于版本和配置)。 - 它会为图集生成一个特殊的标识符,并将其存入数据库,以便系统知道这篇文章是一个图集类型。
/include/helpers/image.helper.php
这个文件提供了通用的图片处理函数,如生成缩略图 (ImageResize)、获取图片信息等。archive.helper.php 在处理图集上传时,会调用此文件中的函数来生成不同尺寸的缩略图。

(图片来源网络,侵删)
/dede/album_add.php 和 /dede/album_edit.php
这两个是后台管理界面的PHP处理文件。
album_add.php: 用于处理新建图集表单的提交数据。album_edit.php: 用于处理编辑已有图集表单的提交数据。 它们会调用archive.helper.php中的核心逻辑来完成数据的最终入库。
前端模板文件 (HTML)
这些文件决定了图集在前台如何展示给用户。
/templets/default/article_image.htm
这是 前台图集内容页的默认模板文件,当你访问一篇图集文章时,DedeCMS 就会调用这个模板来渲染页面。
- 核心功能:
- 通过
{dede:field.body/}标签获取后台编辑器中保存的图集数据(通常是序列化的字符串)。 - 使用
{dede:imagelist}这个专门为图集设计的循环标签来解析{dede:field.body/}中的图片数据。 {dede:imagelist}会循环输出每一张图片,并提供以下常用变量:[field:imgsrc/]: 原始图片路径。[field:litpic/]: 缩略图路径。[field:text/]: 图片描述/说明文字。
- 模板中通常包含了JS代码(如
jquery.media.js)来实现图片的弹出放大、幻灯片切换等效果。
- 通过
/templets/default/list_imagelist.htm
这是 图集列表页的默认模板文件,用于在栏目列表中以缩略图组的形式展示图集文章。

(图片来源网络,侵删)
- 核心功能:
- 使用
{dede:list}或{dedarclist}标签来循环列出文章。 - 在循环体内,通过
{dede:field.body}配合{dede:imglist}或{dede:imglink}等标签来提取第一张或前几张图片作为封面图展示。 - 用
[field:imglist/0/]来获取图集中的第一张图片。
- 使用
核心标签文件 (PHP)
这些文件定义了在模板中使用的标签,如 {dede:imagelist}。
/include/taglib/imagelist.lib.php
这是 {dede:imagelist} 标签的解析文件,当模板引擎遇到 {dede:imagelist} 时,会调用这个文件。
- 核心功能:
- 接收从模板传递过来的参数(如要获取的文章ID)。
- 根据文章ID,从数据库中读取
body字段里存储的图集数据。 - 将序列化的字符串反序列化,解析成一个图片数组。
- 将这个数组传递给模板引擎,以便在模板中进行循环输出。
数据库结构
图集的数据主要存储在以下表中:
dede_archives(主表):typeid: 栏目ID。arctypeid: 同typeid。title: 文章标题。pubdate: 发布时间。litpic: 封面图片路径,这里通常只存一张图,作为图集在列表页的默认封面。
dede_addonarticle(附加表):aid: 关联到主表的ID。body: 字段,这里存放了图集所有图片的详细信息,通常是一个序列化后的字符串,a:3:{i:0;s:60:" uploads/20251018/123456.jpg ";i:1;s:60:" uploads/20251018/789012.jpg ";...}。archive.helper.php就是在这里写入数据的。
总结与修改指南
如果你想修改“自定义图片”的某个部分,应该编辑哪个文件?
| 修改目标 | 涉及文件 | 说明 |
|---|---|---|
| 修改图集在前台的展示样式 | /templets/default/article_image.htm |
这是最常用的修改,你可以调整HTML结构和CSS样式,改变图片排列方式、添加/修改JS效果等。 |
| 修改图集在列表页的展示方式 | /templets/default/list_imagelist.htm |
修改这里可以改变栏目列表中图集文章的缩略图显示。 |
| 修改图集上传或保存的逻辑 | /include/helpers/archive.helper.php |
高风险操作,通常不建议修改,除非你非常了解PHP和DedeCMS的底层逻辑。 |
| 修改图集标签的解析方式 | /include/taglib/imagelist.lib.php |
你想给 {dede:imagelist} 添加一个新的自定义属性,可能需要修改这里。 |
| 修改后台图集编辑界面 | /dede/album_add.php, /dede/album_edit.php 及其对应的模板文件 |
后台界面的模板文件通常也在 /templets/dede/ 目录下。 |
一个常见的自定义需求:
需求:我想让图集的图片点击后在新标签页打开,而不是弹出灯箱效果。
解决方案:
- 打开前台图集模板文件
/templets/default/article_image.htm。 - 找到处理图片点击事件的
<a>- 修改它,添加
target="_blank"属性。- 修改前可能类似:
<a href='[field:imgsrc/]' rel="gallery"> - 修改后应为:
<a href='[field:imgsrc/]' rel="gallery" target="_blank">
- 修改它,添加
通过理解这些文件的作用,你就能更自由地定制 DedeCMS 的图集功能,使其更符合你的网站需求。
