使用 arclist 标签(最常用、最简单)
{dede:arclist} 是DedeCMS最核心的列表标签,通过指定特定属性,可以直接调用出视频列表。

核心属性说明:
-
channel:指定要调用的模型ID。channel='1':调用文章列表。channel='3':调用软件列表。channel='-8':调用单个文件模型(这是存放视频最常用的模型)。channel='-9':调用软件模型。channel='-10':调用商品模型。- 注意:
-8是Dede默认的“单个文件”模型ID,如果你的自定义模型ID不同,请务必去后台“核心” -> “内容模型管理”中查看你的视频模型对应的ID。
-
addfields:获取附加表里的字段,视频的标题、描述、播放地址等信息通常都存在附加表里。addfields='video,typeurl',表示调用video(视频地址)和typeurl(栏目地址)这两个附加字段。
-
limit:获取条数。limit='0,10'表示调用从第0条开始的10条记录。 -
typeid:指定栏目ID。typeid='5'表示只调用ID为5的栏目下的视频,留空则调用所有有权限的栏目。
(图片来源网络,侵删) -
orderby:排序方式。orderby='pubdate'按发布时间排序,orderby='hot'按点击量排序。
示例代码:
假设你的视频使用的是默认的“单个文件”模型(ID为-8),你想调用一个视频列表,并显示标题、缩略图和视频播放地址。
{dede:arclist channel='-8' addfields='video,typeurl' limit='0,6' orderby='pubdate'}
<div class="video-item">
<!-- 缩略图,默认用litpic字段 -->
<a href="[field:arcurl/]">
<img src="[field:litpic/]" alt="[field:title/]" />
</a>
<!-- 视频标题 -->
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<!-- 视频播放地址,这里用超链接指向视频文件 -->
<p>播放地址:<a href="[field:video/]">[field:video/]</a></p>
</div>
{/dede:arclist}
代码解析:
channel='-8':明确告诉Dede我们要调用的是“单个文件”模型下的内容。addfields='video,typeurl':我们需要获取视频地址(video字段)和栏目链接(typeurl字段),所以把它们加进来。[field:arcurl/]:文章的URL,点击标题或图片可以跳转到视频详情页。[field:litpic/]:文章的缩略图URL。[field:title/]。[field:video/]:通过addfields引入的视频地址字段。
使用SQL语句调用(更灵活、更强大)
当arclist标签无法满足复杂需求时(需要跨模型查询、按特定字段排序等),可以直接使用{dede:sql}标签执行原生SQL查询。

场景:查询附加表 dede_addonsoft(单个文件模型的默认附加表)
步骤1:了解表结构
你需要知道视频信息存在哪个表里。
- 主表(文章基本信息):
dede_archives - 附加表(视频详细信息):
dede_addonsoft(这是“单个文件”模型的默认附加表名,如果你改过,请用你自己的)
步骤2:编写SQL语句
假设我们要查询dede_addonsoft表中,typeid为5的栏目下的前6个视频,并按发布时间排序。
SELECT
a.id, a.title, a.litpic, a.pubdate, a.typeid,
s.body, s.video
FROM
dede_archives AS a
LEFT JOIN
dede_addonsoft AS s ON a.id = aid
WHERE
a.arctypeid = 5
ORDER BY
a.pubdate DESC
LIMIT 0, 6
SQL语句解析:
SELECT ...:选择我们需要的字段,从主表a和附加表s中选取。FROM dede_archives AS a:从主表dede_archives查询,并给它一个别名a。LEFT JOIN dede_addonsoft AS s ON a.id = aid:通过aid(附加表中的文章ID)关联附加表dede_addonsoft(别名s)。WHERE a.arctypeid = 5:筛选出栏目ID为5的文章。ORDER BY a.pubdate DESC:按发布时间降序排列(最新的在前)。LIMIT 0, 6:只取6条记录。
步骤3:在模板中使用{dede:sql}
{dede:sql sql="
SELECT
a.id, a.title, a.litpic, a.pubdate, a.typeid,
s.body, s.video
FROM
dede_archives AS a
LEFT JOIN
dede_addonsoft AS s ON a.id = aid
WHERE
a.arctypeid = 5
ORDER BY
a.pubdate DESC
LIMIT 0, 6
"}
<div class="video-item">
<a href="/plus/view.php?aid=[field:id/]">
<img src="[field:litpic/]" alt="[field:title/]" />
</a>
<h3><a href="/plus/view.php?aid=[field:id/]">[field:title/]</a></h3>
<p>发布时间:[field:pubdate function="MyDate('Y-m-d', @me)"/]</p>
</div>
{/dede:sql}
代码解析:
[field:id/]:直接获取SQL查询结果中的id字段。/plus/view.php?aid=[field:id/]:这是DedeCMS默认的文章详情页链接方式。[field:pubdate function="MyDate('Y-m-d', @me)"/]:对pubdate时间戳进行处理,格式化为年-月-日的格式。
自定义模型并调用(最佳实践)
如果你网站上的内容主要是视频,强烈建议你不要使用默认的“单个文件”模型,而是创建一个全新的自定义视频模型,这样做的好处是:
- 字段命名清晰:你可以自定义字段名,如
video_url、video_duration、actor等,而不是使用默认的video、body。 - 管理方便管理更符合你的业务逻辑。
- 调用明确:调用时
channel指向你的自定义模型ID,不会和其他模型混淆。
操作流程:
-
创建模型: 后台 -> 核心 -> 内容模型管理 -> [增加一个内容模型]。
- 模型名称:
视频 - 模型表前缀:
dede_addonvideo(Dede会自动生成,你也可以自定义) - ...其他信息填写后保存。
- 模型名称:
-
添加字段: 进入刚创建的“视频”模型管理,点击[管理字段]。
- 增加字段:
video_url(类型:多媒体,用于上传视频文件) - 增加字段:
play_count(类型:数字,用于记录播放次数) - 增加字段:
director(类型:字符,用于记录导演) - ...根据你的需要添加。
- 增加字段:
-
在栏目中使用模型: 后台 -> 核心 -> 栏目管理 -> 选择你要显示视频的栏目 -> 更改其“内容模型”为你刚创建的“视频”模型。
-
在模板中调用: 现在调用就变得非常清晰了。
{dede:arclist channel='你的自定义模型ID' addfields='video_url,play_count,director' limit='0,8' orderby='pubdate'}
<div class="video-item">
<a href="[field:arcurl/]">
<img src="[field:litpic/]" alt="[field:title/]" />
<span class="play-icon"></span>
</a>
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<p>导演:[field:director/]</p>
<p>播放次数:<span class="play-count">[field:play_count/]</span></p>
</div>
{/dede:arclist}
总结与建议
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
arclist |
简单、快捷、官方支持 | 灵活性较低,依赖固定模型ID | 调用少量、规则简单的视频列表。 |
sql语句 |
极其灵活,可定制任何查询 | 需要懂SQL,有出错风险,不同Dede版本表名可能不同 | 复杂的、跨模型的、特殊排序的查询需求。 |
| 自定义模型 | 最佳实践、结构清晰、易于维护和扩展 | 初次设置需要一些工作量 | 新项目或以视频为主的网站,强烈推荐! |
对于大多数用户,方法一(arclist) 已经足够应付日常需求,如果你是开发者或对网站有更高的要求,方法三(自定义模型) 是最规范、最长远的选择。方法二(SQL) 则作为解决疑难杂症的“利器”存在。
