核心思想:专题的构成
一个 DedeCMS 专题主要由以下几个部分组成:

(图片来源网络,侵删)
- 专题本身:这是专题的“外壳”或“容器”,定义了专题的基本信息,如标题、描述、封面图等。
- :这是专题的“血肉”,即被选入专题的文章、图集等内容,这些内容本身仍然存放在各自的原有频道表中(如
dede_archives文章表),专题只是通过一个关联表引用了它们。 - 专题栏目:这是专题的“骨架”,用于对专题内的内容进行分类和组织,形成层级结构。
核心数据库表详解
DedeCMS 的专题功能主要涉及以下几张核心数据表,我们以 DedeCMS V5.x / V6.x 版本为例进行说明。
dede_arctype (栏目表)
这张表是 所有频道(包括专题)的顶级分类表,专题本身在系统结构中被视为一个特殊的“顶级栏目”。
| 字段名 | 说明 | 备注 |
|---|---|---|
id |
栏目ID,主键 | 每个专题的ID都记录在这里。 |
reid |
父栏目ID | 如果专题是顶级栏目,则 reid 为 0。 |
topid |
顶级栏目ID | 对于专题,topid 就是它自己的 id。 |
typename |
栏目名称 | 就存储在这里。 |
typedir |
栏目目录 | 专题的访问URL路径,如 /special/123/。 |
isdefault |
是否为默认栏目 | 专题通常为 0。 |
ishidden |
是否隐藏 | 专题通常为 0。 |
corank |
栏目权限 | 通常为 0。 |
description |
栏目描述 | 专题的简介。 |
keywords |
栏目关键词 | 专题的关键词。 |
templet |
专题模板 | 指定该专题使用的模板文件。 |
小结:dede_arctype 表定义了专题的基本信息和URL结构,你可以把它理解为专题的“档案卡”。
dede_special (专题主表)
这张表专门用来存储专题的 特有属性,是与 dede_arctype 表配合使用的。

(图片来源网络,侵删)
| 字段名 | 说明 | 备注 |
|---|---|---|
id |
专题ID,主键 | 与 dede_arctype 表中的 id 对应。 |
attr |
专题属性 | 一个整数字段,用位运算表示专题的多种属性, - 1: 允许评论- 2: 专题封面- 4: 专题模型 |
body |
存放专题的详细介绍,支持HTML代码。 | |
click |
点击量 | 专题的点击次数。 |
notpost |
禁止投稿 | 1表示禁止,0表示允许。 |
mid |
会员ID | 创建专题的管理员/会员ID。 |
小结:dede_special 表存储了专题独有的、不在通用栏目表中的信息,如详细介绍、点击量等。
dede_specialtopic (专题内容关联表)
这是专题功能的核心表,它像一个“胶水”,将 专题 和 紧密地关联在一起。
| 字段名 | 说明 | 备注 |
|---|---|---|
tid |
专题ID | 关联到 dede_arctype 表的 id。 |
arctypeid |
栏目ID | 这个字段非常关键! 它记录了内容所属的栏目ID。 |
id |
内容ID | 关联到具体内容表的ID,例如文章的 aid。 |
addtime |
添加时间 | 内容被添加到专题的时间戳。 |
重要说明:
- 这张表通过
tid字段将内容归属到某个专题。 - 通过
arctypeid字段,系统可以知道这个内容原本属于哪个栏目,这对于在专题内按原栏目分类显示内容至关重要。 - 通过
id字段,系统可以定位到具体的内容记录。
dede_special_rank (专题栏目表)
这张表用于构建专题内部的 二级分类(专题栏目),实现专题内容的精细化管理。

(图片来源网络,侵删)
| 字段名 | 说明 | 备注 |
|---|---|---|
id |
专题栏目ID,主键 | |
tid |
所属专题ID | 关联到 dede_arctype 表的 id。 |
reid |
父栏目ID | 用于构建专题栏目的层级结构,0表示顶级专题栏目。 |
typename |
专题栏目名称 | 专题内部的分类名称,如“行业动态”、“技术分享”。 |
typedir |
专题栏目目录 | 专题栏目在专题内部的URL路径。 |
ishidden |
是否隐藏 | 1为隐藏,0为显示。 |
小结:dede_special_rank 表实现了专题内部的“文件夹”结构,让内容可以分门别类地组织。
表之间的关系与数据流程
为了更好地理解,我们用一个流程图来表示这些表之间的关系:
+-----------------+ +-------------------+
| dede_arctype | | dede_special |
| (专题档案卡) | | (专题特有属性) |
|-----------------| |-------------------|
| id (专题ID) |----->| id (专题ID) |
| typename (标题) | | attr (属性) |
| typedir (URL) | | body (介绍) |
| description | | ... |
| ... | +-------------------+
+-----------------+
| (1对1关系)
|
| (1对多关系)
v
+---------------------------------+
| dede_specialtopic |
| (专题与内容的“胶水”表) |
|---------------------------------|
| tid (专题ID) |
| arctypeid (原栏目ID) | <-- 指向 dede_arctype (原栏目)
| id (内容ID,如文章aid) | <-- 指向 dede_archives (文章内容)
| addtime |
+---------------------------------+
|
| (1对多关系)
v
+-----------------+ +-------------------+
| dede_archives | | dede_special_rank |
| (文章/内容表) | | (专题内部栏目表) |
|-----------------| |-------------------|
| aid (文章ID) |<-----| id (专题栏目ID) |(标题) | | tid (所属专题ID) |
| typeid (栏目ID) | | typename (分类名) |
| ... | | ... |
+-----------------+ +-------------------+
数据流程示例:
-
创建专题:
- 在后台创建一个名为“前端技术”的专题。
- 系统会在
dede_arctype表中插入一条记录,typename为“前端技术”,typedir为/special/100/。 - 系统会在
dede_special表中插入一条对应的记录,id为 100。
-
到专题:
- 你选择了一篇 ID 为 55 的文章(在
dede_archives表中)和 ID 为 200 的图集(在dede_addonimages表中)。 - 你将它们添加到“前端技术”专题(ID 为 100)中。
- 系统会在
dede_specialtopic表中插入两条记录:tid=100,arctypeid=5 (假设文章原属栏目ID为5),id=55tid=100,arctypeid=6 (假设图集原属栏目ID为6),id=200
- 你选择了一篇 ID 为 55 的文章(在
-
在专题内部分类:
- 你想在“前端技术”专题下创建两个子分类:“JavaScript”和“CSS”。
- 系统会在
dede_special_rank表中插入两条记录:tid=100,reid=0,typename="JavaScript"tid=100,reid=0,typename="CSS"
- 你可以将文章55移动到“JavaScript”分类下(这通常通过后台操作完成,会更新
dede_specialtopic表中的相关记录或增加一个rankid字段来关联,具体取决于版本实现)。
| 功能 | 涉及核心表 | 作用 |
|---|---|---|
| 专题基本信息 | dede_arctype |
定义专题的名称、URL、描述等基础信息。 |
| 专题特有属性 | dede_special |
存放专题的详细介绍、点击量等独有数据。 |
| 专题内部分类 | dede_special_rank |
在专题内部建立二级分类,方便内容组织。 |
理解这几张表的结构和关系,对于二次开发、数据迁移或排查专题相关的bug都至关重要,当你需要修改专题模板、获取专题内容列表时,最终的SQL查询几乎都会围绕这几张表进行关联查询。
