我将从基本原理、实现步骤、常用技巧和常见问题四个方面来为你详细讲解。

基本原理
在 DedeCMS 中,专题列表页的实现依赖于两个核心部分:
- 专题模板:这是一个 HTML 模板文件,定义了专题页面的整体布局和样式,在这个模板中,你会使用 DedeCMS 的专题列表调用标签来动态地获取并显示属于该专题的所有文章。
- 专题列表调用标签:这是 DedeCMS 的专用标签,用于从数据库中查询并输出指定专题下的文章列表,最常用的标签是
{dede:arclist},但它需要通过特定的属性来限定专题范围。
核心流程:
- 创建一个专题。
- 为该专题创建一个专门的模板文件(
special_list.htm)。 - 在后台将这个模板文件与专题进行关联。
- 向专题中添加文章。
- 访问专题的 URL,DedeCMS 会自动使用关联的模板,并调用标签输出文章列表,最终生成一个完整的专题列表页。
实现步骤
步骤 1:创建专题
- 登录 DedeCMS 后台。
- 在左侧菜单栏找到 【专题】 -> 【专题管理】。
- 点击 “增加专题” 按钮。
- 填写专题信息:
- 专题名称:给专题起一个名字,2025年度最佳科技产品”。
- 专题目录:这是专题页面的访问路径,
tech-products-2025,URL 将会是你的域名/special/tech-products-2025/。 - 专题模板:这是关键一步,点击后面的“选择模板”按钮,选择你刚刚创建或准备好的专题列表模板(
special_list.htm),如果这里不选,专题页面将无法正常显示列表。 - 专题简介:填写专题的描述性文字。
- 缩略图:上传专题的封面图。
- 其他选项如专题属性、关联栏目等,根据需要填写。
- 点击“确定”保存专题。
步骤 2:创建专题列表模板
在你的模板目录(通常是 /templets/default/ 或你自定义的模板目录)下,创建一个新的 HTML 文件,special_list.htm。
在这个文件中,你可以像制作普通网页一样进行 HTML 和 CSS 布局,文章列表部分,则使用 DedeCMS 的标签来调用。

一个简单的 special_list.htm 模板示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">{dede:field.title/} - {dede:global.cfg_webname/}</title>
<link rel="stylesheet" href="/templets/default/css/style.css">
</head>
<body>
<div class="header">...</div>
<div class="main">
<!-- 专题标题和简介 -->
<div class="special-title">
<h1>{dede:field.title/}</h1>
<p>{dede:field.description function='htmlspecialchars(@me)'/}</p>
</div>
<!-- 文章列表开始 - 这是核心部分 -->
<div class="article-list">
{dede:arclist
titlelen='50'
row='20'
orderby='pubdate'
orderway='desc'
typeid=''
channelid='-1'
addfields='photo'
}
<div class="article-item">
<!-- 如果有缩略图则显示缩略图 -->
[field:picname runphp='yes']
if(@me != '') @me = '<div class="article-img"><img src="'.@me.'" alt="[field:title/]"></div>';
else @me = '';
[/field:picname]
<div class="article-info">
<h2><a href="[field:arcurl/]">[field:title/]</a></h2>
<p class="intro">[field:description function='cn_substr(@me, 150)'/]...</p>
<div class="meta">
<span>发布时间:[field:pubdate function='MyDate('Y-m-d', @me)'/]</span>
<span>点击:[field:click/]</span>
</div>
</div>
</div>
{/dede:arclist}
</div>
<!-- 分页标签 -->
<div class="page">
{dede:pagelist listsize='4'/}
</div>
</div>
<div class="footer">...</div>
</body>
</html>
步骤 3:向专题添加文章
- 在后台进入 【专题】 -> 【专题管理】,找到你刚创建的专题,点击 ”。
- 管理页面,你可以:
- 从本站文章添加:点击“选择文章”,在弹出的窗口中选择已有的文章,确定”即可将这些文章加入到专题中。
- 远程采集/手动添加:也可以通过其他方式获取内容并添加进来。
步骤 4:访问专题页面
完成以上步骤后,直接在浏览器中访问你在步骤1中设置的专题目录对应的 URL,http://你的域名/special/tech-products-2025/,你就能看到一个包含所有已添加文章的专题列表页面了。
核心标签详解:{dede:arclist} 在专题中的使用
在专题模板中,{dede:arclist} 是调用文章列表的主力,为了限定只显示当前专题的文章,通常不需要特别复杂的属性,因为 DedeCMS 在解析时会自动根据当前专题的 ID 进行过滤。
常用属性说明:

| 属性名 | 作用 | 示例 |
|---|---|---|
row |
显示的文章数量 | row='10' 显示10篇文章 |
infolen |
内容简介长度 | infolen='200' 内容简介显示200字节 |
orderby |
排序依据 | orderby='hot' (按点击), orderby='pubdate' (按发布时间), orderby='scores' (按评论数) |
orderway |
排序方式 | orderway='desc' (降序), orderway='asc' (升序) |
typeid |
(重要)指定栏目ID,在专题中,通常留空 typeid='',表示显示所有加入专题的文章,无论它属于哪个栏目。 |
typeid='5' 只显示ID为5的栏目下的文章 |
channelid |
指定模型ID。channelid='-1' 表示所有模型(文章、图集等)。 |
channelid='1' 只调用文章模型 |
addfields |
调用附加字段,如果你的文章模型有自定义字段(如 author, photo),需要在这里声明才能使用。 |
addfields='photo,author' |
idlist |
指定文章ID列表,用于调用特定文章。 | idlist='1,5,10' |
特殊技巧:调用专题缩略图
在模板中,{dede:field.title/} 和 {dede:field.description/} 用于调用专题本身的标题和简介,但如果想在列表页里也显示专题的封面图(作为头图),可以这样:
<!-- 在专题标题下方显示专题封面图 -->
{dede:field.image/}
常见问题与解决方法
问题:专题页面空白,或者只显示“专题内容”四个字。
原因:
- 最常见原因:创建专题时,没有在 “专题模板” 字段中选择或指定模板文件。
- 模板文件路径错误,DedeCMS 找不到你的
special_list.htm文件。 - 模板文件中有致命的 PHP 或 HTML 错误,导致解析失败。
解决方法:
- 检查专题管理,确认模板选择正确。
- 检查模板文件是否存在于正确的目录下。
- 检查模板文件语法,可以暂时简化模板内容,看是否能正常显示,再逐步添加代码排查。
问题:{dede:arclist} 一篇文章都没有显示出来。
原因:
- 专题里确实没有添加任何文章。
typeid属性设置错误,导致过滤掉了所有文章,在专题中,建议将typeid设为空。- 模板中的标签写错,例如拼写错误。
解决方法:
- 进入专题管理,确保至少添加了一篇文章。
- 检查
{dede:arclist}标签的typeid属性,尝试将其设为空。 - 仔细核对标签语法。
问题:如何实现专题分页?
原因:
- 只使用了
{dede:arclist},但没有使用分页标签。
解决方法:
-
在
{dede:arclist}标签的后面,紧接着添加分页标签:{dede:arclist row='20' ...} <!-- 文章列表循环内容 --> {/dede:arclist} <!-- 分页代码 --> <div class="dede_pages"> <ul> {dede:pagelist listsize='4'/} </ul> </div> -
注意:分页功能需要确保你的专题设置中,每页显示的文章数量(
row)是有限的,并且文章总数超过了这个数量。
问题:专题列表页的样式很乱,如何美化?
解决方法:
这完全是 CSS 的工作,你需要为模板中的 HTML 元素编写 CSS 样式。
在上面的模板示例中,你可以为 .article-item, .article-img, .article-info 等类编写 CSS,来控制文章列表的布局、颜色、间距等,使其看起来更美观。
