在 DedeCMS 中,实现图片幻灯片(轮播图)功能,最常用、最核心的标签是 {dede:arclist},虽然它叫“文章列表”,但通过指定特定的属性,它可以完美地调用指定栏目的图片,并生成适合幻灯片插件使用的 HTML 结构。

(图片来源网络,侵删)
下面我将从基础用法到高级技巧,全面讲解如何使用这个标签。
核心标签:{dede:arclist}
这是实现幻灯片功能的基础,我们需要通过以下属性来精确地获取我们想要的数据。
基础属性解析
为了制作幻灯片,我们需要关注以下几个关键属性:
| 属性名 | 作用 | 示例值 | 说明 |
|---|---|---|---|
typeid |
指定栏目ID | typeid='1' |
必填,指定要调用哪个栏目下的图片,通常我们会新建一个专门的“首页幻灯片”栏目。 |
row |
调用条数 | row='5' |
必填,设置你想要展示的图片数量,例如5张就写5。 |
infolen |
简介/摘要长度 | infolen='100' |
设置摘要显示的字符长度。 |
imgwidth |
图片宽度 | imgwidth='980' |
重要,设置缩略图的宽度,幻灯片插件会用到这个尺寸。 |
imgheight |
图片高度 | imgheight='350' |
重要,设置缩略图的高度。 |
typeid |
指定栏目ID | typeid='1' |
必填,指定要调用哪个栏目下的图片,通常我们会新建一个专门的“首页幻灯片”栏目。 |
channelid |
模型ID | channelid='1' |
默认为1(文章模型),如果调用的是图集(channelid=2),则需要调整,但通常幻灯片都用文章模型。 |
orderby |
排序方式 | orderby='pubdate' |
按发布时间排序。orderby='click' 则按点击量排序。 |
keyword |
keyword='幻灯片' |
调用包含特定关键词的文章。 | |
flag |
特性标志 | flag='h' |
h 代表头条,c 代表推荐,p 代表图片,如果希望只调用带图片的文章,可以使用 flag='p'。 |
关键字段:[field:picname/]
在 {dede:arclist} 循环内部,[field:picname/] 是获取文章第一张缩略图地址的字段,这是制作幻灯片最核心的字段。

(图片来源网络,侵删)
其他常用字段:
[field:title/][field:description/]:文章摘要[field:pubdate function='strftime("%Y-%m-%d",@me)'/]:发布日期,可以使用函数格式化[field:id/]:文章ID[field:arcurl/]:文章链接地址
基础实例:调用指定栏目的图片
假设我们创建了一个栏目,ID为 1,名为“首页幻灯片”,我们想从这个栏目调用最新的5张图片,每张图片尺寸为 980x350 像素。
在需要放置幻灯片的模板文件(通常是 index.htm)中,写入以下代码:
<div class="slideshow">
<ul class="slides">
{dede:arclist typeid='1' row='5' imgwidth='980' imgheight='350'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">
<img src="[field:picname/]" alt="[field:title/]" width="980" height="350">
</a>
<div class="title">[field:title/]</div>
</li>
{/dede:arclist}
</ul>
</div>
代码解释:

(图片来源网络,侵删)
{dede:arclist typeid='1' row='5' ...}:调用栏目ID为1的文章,共5条。imgwidth和imgheight:虽然这里设置了,但主要作用是让Dede在生成缩略图时按此尺寸裁剪,图片标签<img>中的width和height是为了确保布局稳定。[field:picname/]:获取每篇文章的第一张缩略图作为幻灯片图片。[field:arcurl/]:获取文章链接,点击图片后可以跳转到对应文章。[field:title/]:获取文章标题,用作img的alt属性,有利于SEO。
进阶技巧:处理无图文章和自定义样式
处理没有缩略图的文章
如果某些文章没有上传缩略图,[field:picname/] 会为空,导致图片无法显示,我们可以使用 if 条件语句进行判断。
<div class="slideshow">
<ul class="slides">
{dede:arclist typeid='1' row='5' imgwidth='980' imgheight='350'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">
<!-- 如果有缩略图则显示缩略图,否则显示默认图片 -->
[field:picname runphp='yes']
if(@me != '') @me = '<img src="' . @me . '" alt="[field:title/]" width="980" height="350">';
else @me = '<img src="/images/default-slide.jpg" alt="[field:title/]" width="980" height="350">';
[/field:picname]
</a>
<div class="title">[field:title/]</div>
</li>
{/dede:arclist}
</ul>
</div>
说明:
runphp='yes':允许在标签内执行PHP代码。if(@me != ''):判断@me(即[field:picname/]的值)是否为空。@me = '...':将PHP处理后的结果重新赋值给@me,最终输出到模板中。/images/default-slide.jpg:请替换为你自己的默认图片路径。
添加幻灯片指示器和控制按钮
一个完整的幻灯片通常有底部的圆点指示器和左右箭头,我们可以通过修改HTML结构来实现。
<div class="slideshow-container">
<!-- 幻灯片图片区域 -->
<div class="slideshow">
<ul class="slides">
{dede:arclist typeid='1' row='5' imgwidth='980' imgheight='350'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">
<img src="[field:picname/]" alt="[field:title/]">
</a>
</li>
{/dede:arclist}
</ul>
</div>
<!-- 左右切换按钮 -->
<a class="prev" onclick="changeSlide(-1)">❮</a>
<a class="next" onclick="changeSlide(1)">❯</a>
<!-- 底部指示器 -->
<div class="dots-container">
{dede:arclist typeid='1' row='5'}
<span class="dot" onclick="currentSlide([field:global.autoindex/])"></span>
{/dede:arclist}
</div>
</div>
说明:
[field:global.autoindex/]:这是一个全局变量,在arclist循环中会自动生成从1开始的序号(1, 2, 3...),非常适合用来制作指示器。
最终步骤:配合JS和CSS实现动画
HTML结构搭建好后,你需要:
- 编写CSS:为上述HTML元素添加样式,控制它们的布局、隐藏/显示、过渡效果等。
- 引入JS库:可以使用成熟的JS库如 Swiper、Slick 或 Bootstrap Carousel,它们提供了强大的幻灯片功能,你只需要按照它们的规范,把上面生成的HTML结构替换进去即可。
以 Swiper 为例的整合思路:
- 下载 Swiper:从 Swiper 官网 下载最新版本。
- 引入文件:在HTML的
<head>中引入 Swiper 的 CSS 和 JS 文件。 - 修改HTML结构:将你的HTML代码包装进 Swiper 规定的结构中。
<!-- Swiper -->
<div class="swiper mySwiper">
<div class="swiper-wrapper">
<!-- 这里放你的 {dede:arclist} 循环内容 -->
{dede:arclist typeid='1' row='5' imgwidth='980' imgheight='350'}
<div class="swiper-slide">
<a href="[field:arcurl/]" title="[field:title/]">
<img src="[field:picname/]" alt="[field:title/]">
</a>
</div>
{/dede:arclist}
</div>
<!-- 如果需要分页器 -->
<div class="swiper-pagination"></div>
<!-- 如果需要导航按钮 -->
<div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div>
</div>
<!-- Swiper JS -->
<script src="path/to/swiper-bundle.min.js"></script>
<!-- 初始化 Swiper -->
<script>
var swiper = new Swiper(".mySwiper", {
loop: true, // 循环模式
pagination: {
el: ".swiper-pagination",
clickable: true,
},
navigation: {
nextEl: ".swiper-button-next",
prevEl: ".swiper-button-prev",
},
autoplay: {
delay: 3000, // 自动切换时间,单位ms
disableOnInteraction: false,
},
});
</script>
- 数据准备:在后台创建“幻灯片”栏目,并上传文章和设置缩略图。
- 模板调用:使用
{dede:arclist}标签在模板中调用这些数据,生成符合JS库要求的HTML结构。 - 美化与交互:引入CSS和JS库(如Swiper),实现最终的动画效果。
通过以上步骤,你就可以在 DedeCMS 中灵活地制作出功能强大的图片幻灯片了。
