使用DedeCMS自带的“图集模型”调用(最推荐)
这是最标准、最规范的方法,适用于你已经创建了图集内容模型的情况。

(图片来源网络,侵删)
准备工作:确保栏目是“图集”类型
在后台的【栏目管理】中,你需要调用图集的栏目类型设置为“图集”,DedeCMS才会正确识别并调用图片。
使用{dede:arclist}标签调用
{dede:arclist}是DedeCMS最强大的内容列表标签,调用图集同样适用。
基本代码:
{dede:arclist typeid='栏目ID' row='6' titlelen='24' orderby='pubdate'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">
<!-- 调用第一张图片作为封面 -->
<img src="[field:picname/]" alt="[field:title/]" width="200" height="150" />
<span class="title">[field:title/]</span>
</a>
</li>
{/dede:arclist}
代码参数详解
typeid='栏目ID': 必须指定,填写你想要调用图集的栏目ID,如果想调用所有顶级图集栏目,可以写typeid='top'。row='6': 显示的图集数量,这里是6条,len='24'`: 标题字符长度,这里显示24个字符(一个汉字算两个字符)。orderby='pubdate': 排序方式,按发布时间排序,也可以用click(按点击量) 或id(按文章ID)。[field:arcurl/]: 图集文章的链接地址。[field:title/]: 图集文章的标题。[field:picname/]: 关键! 这个标签会自动获取图集文章里的第一张图片的地址,作为封面图,这是调用图集的核心。
完整示例(带CSS样式)
将下面的代码放在你首页模板的相应位置。

(图片来源网络,侵删)
HTML部分:
<!-- 首页图集展示区 -->
<div class="home-gallery">
<h2>精选图集</h2>
<ul class="gallery-list">
{dede:arclist typeid='2' row='6' titlelen='20' orderby='pubdate'}
<li>
<a href="[field:arcurl/]" title="[field:title function='htmlspecialchars(@me)'/]">
<img src="[field:picname/]" alt="[field:title function='htmlspecialchars(@me)'/]" />
<div class="gallery-title">[field:title/]</div>
</a>
</li>
{/dede:arclist}
</ul>
</div>
CSS部分(放在<head>标签内或外部CSS文件中):
.home-gallery {
width: 100%;
margin: 20px 0;
}
.home-gallery h2 {
text-align: center;
padding: 10px 0;
font-size: 24px;
border-bottom: 2px solid #eee;
}
.gallery-list {
list-style: none;
padding: 0;
margin: 0;
display: flex; /* 使用flex布局,让图片横向排列或自适应 */
flex-wrap: wrap; /* 允许换行 */
justify-content: space-around; /* 均匀分布 */
}
.gallery-list li {
margin: 10px;
width: 200px; /* 可以根据需要调整 */
transition: transform 0.3s ease;
}
.gallery-list li:hover {
transform: scale(1.05); /* 鼠标悬停时放大效果 */
}
.gallery-list li a {
display: block;
text-decoration: none;
color: #333;
position: relative;
}
.gallery-list li img {
width: 100%;
height: auto;
display: block;
border-radius: 5px; /* 圆角 */
}
.gallery-title {
text-align: center;
margin-top: 8px;
font-size: 14px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
自由调用图片(不依赖图集模型)
如果你的图片是上传到文章内容里的,而不是通过图集模型添加的,你可以使用{dede:img}标签来提取。
基本代码:
{dede:arclist typeid='栏目ID' row='6' titlelen='24'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">
<!-- 使用dede:img标签提取正文中的第一张图 -->
[field:body function='(preg_match("/<img\s+(.*?)(src\=[\'|\"](.*?)[\'|\"][^>]*>)/i", @me, $str_arr) ? $str_arr[3] : "默认图片地址")'/]
<span class="title">[field:title/]</span>
</a>
</li>
{/dede:arclist}
代码详解:
- 这个方法的核心是
function='...'部分,它使用正则表达式preg_match在文章正文 ([field:body]) 中查找第一个<img>标签,并提取出它的src属性值。 preg_match("/<img\s+(.*?)(src\=[\'|\"](.*?)[\'|\"][^>]*>)/i", @me, $str_arr): 正则表达式,@me代表当前字段的值(即文章正文)。? $str_arr[3] : "默认图片地址":如果找到了图片,就显示$str_arr[3](即图片地址);如果没找到,就显示一个你指定的“默认图片地址”。
注意: 这种方法不如方法一稳定和高效,因为它是从HTML文本中“抓取”图片,如果文章结构复杂或没有图片,可能会出错。
使用自定义宏标记(更灵活)
如果你想在首页的任意位置(比如广告位、侧边栏)调用一个特定的图集,可以使用自定义宏标记。
在后台创建宏标记
-
登录DedeCMS后台,进入【系统】 -> 【SQL命令行工具】。
-
在输入框中执行以下SQL语句(注意替换
图集文章ID和图片数量):-- 这里的 123 是你要调用的图集文章ID,6 是要显示的图片数量 INSERT INTO `dede_sysconfig` (`varname`, `info`, `type`, `value`, `groupid`) VALUES ( 'my_home_gallery', -- 宏标记名称,调用时用 {my_home_gallery} '首页指定图集', -- 描述信息 'textarea', -- 类型 '{dede:img listimg='yes'} [field:picname/] {/dede:img}', -- 核心调用代码 8 -- 组ID,随便填一个数字即可 );listimg='yes':这个属性告诉标签只调用被设置为“列表图片”的图片,如果你没有设置,可以去掉这个属性,它会调用所有图片。[field:picname/]:在这里代表单张图片的地址。
-
点击“查询”按钮执行。
在首页模板中调用
执行成功后,你就可以在首页模板的任何地方直接使用这个宏标记了:
<div class="custom-gallery">
{my_home_gallery}
</div>
然后你可以在CSS中为 .custom-gallery 类编写样式来布局这些图片。
总结与建议
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
{dede:arclist} |
官方标准,性能好,稳定,调用第一张图非常方便。 | 需要栏目是“图集”类型。 | 绝大多数情况下的首选,推荐使用。 |
{dede:img} |
灵活,可以从普通文章中提取图片。 | 不稳定,依赖正则表达式,性能稍差,可能找不到图片。 | 内容为普通文章,但想提取图片作为缩略图时使用。 |
| 自定义宏 | 灵活,可以在任意位置调用,可复用。 | 需要手动执行SQL,初次设置稍复杂。 | 在首页固定位置(如广告位、轮播图下方)调用一个特定的图集。 |
对于绝大多数用户,强烈推荐使用方法一,它最符合DedeCMS的设计理念,也最稳定可靠。
