DedeCMS 的核心数据都存储在 dede_archives 这张主表中,其他相关表则围绕它展开,共同构成了一个完整的文档内容管理系统。

(图片来源网络,侵删)
核心表:dede_archives (文档主表)
这是 DedeCMS 中最重要的一张表,存储了所有文档(文章、图集、软件等)的核心信息,无论是哪种内容模型,其基本数据都会在这里。
| 字段名 | 数据类型 | 说明 |
|---|---|---|
id |
mediumint(8) unsigned | 文档主键ID,唯一标识一篇文章,自增主键。 |
typeid |
smallint(5) unsigned | 栏目ID,指向 dede_arctype 表,表示文章所属的栏目。 |
typeid2 |
smallint(5) unsigned | 副栏目ID,用于文章同时属于多个栏目。 |
sortrank |
int(10) unsigned | 文档排序,数字越小,排序越靠前,常用于首页、列表页的排序。 |
flag |
char(30) | 文档属性/标识,这是一个非常关键的字段,用逗号分隔的字符串来标识文章的特殊状态,c: 推荐/头条h: 幻灯片/首页焦点图p: 图片频道s: 跳转页面a: 待审核 |
ismake |
smallint(6) | 是否生成静态文件。1 为已生成,-1 为仅动态。 |
channel |
smallint(6) | 内容模型ID,指向 dede_channeltype 表,用于区分文章、图集、软件等不同类型的内容。 |
arcrank |
smallint(6) | 审核状态。0 为已审核,-1 为待审核,-2 为禁用。 |
click |
int(10) unsigned | 点击量,记录文章被点击的次数。 |
money |
smallint(5) unsigned | 售价,用于付费文档。 |
shorttitle |
varchar(255) | /副标题,可用于列表页显示。 |
color |
varchar(10) | 标题颜色,存储CSS颜色值,如 #FF0000。 |
writer |
varchar(30) | 作者。 |
source |
varchar(50) | 来源。 |
litpic |
varchar(100) | 缩略图,存储缩略图的相对路径。 |
pubdate |
int(10) unsigned | 发布时间,Unix时间戳格式。 |
senddate |
int(10) unsigned | 录入时间,Unix时间戳格式。 |
mid |
smallint(6) | 录入者ID,指向 dede_member 或 dede_admin 表。 |
keywords |
varchar(255) | ,多个关键词用英文逗号 分隔。 |
description |
varchar(255) | 描述,用于列表页摘要和SEO描述。 |
filename |
varchar(255) | 自定义文件名,用于静态化时生成自定义的HTML文件名。 |
重要关联表
除了主表,还有一些表与文档紧密相关,共同构成了完整的内容。
dede_addonarticle (文章附加表)
- 作用模型为“文章”时,文章的具体正文内容存储在这里,而不是
dede_archives,这是一种将主数据和内容分离的设计,可以有效提高主表的查询效率。 - 关联:通过
aid字段与dede_archives表的id字段关联。 - 核心字段:
aid: 文档ID,对应dede_archives.id。body: 文章正文,这里存储的是经过 DedeCMS 特殊标签处理过的 HTML 内容。
dede_arctype (栏目表)
- 作用:存储网站所有栏目的信息。
- 关联:
dede_archives.typeid指向此表的id字段。 - 核心字段:
id: 栏目ID。reid: 父栏目ID,用于构建栏目树。typename: 栏目名称。typedir: 栏目目录,用于静态化路径。isdefault: 是否为默认栏目。
dede_arctiny (简略文档表)
- 作用:一个精简版的
dede_archives表,它只包含文档最核心的信息(如 ID, 栏目 ID, 标题, 缩略图, 发布时间),这个表主要用于首页、列表页等需要快速调取大量文档列表的场景,可以极大减少数据库查询开销。 - 关联:与
dede_archives表结构基本一致,但字段更少,通过id关联。
dede_taglist (TAG标签关联表)
- 作用:记录文档与标签之间的多对多关系。
- 关联:
aid: 文档ID,对应dede_archives.id。tagid: 标签ID,对应dede_tag.id。
- 核心字段:
aid: 文档ID。tagid: 标签ID。typeid: 栏目ID。
dede_tagindex (TAG标签索引表)
- 作用:存储所有标签的名称和基本信息。
- 关联:
dede_taglist.tagid指向此表的id字段。 - 核心字段:
id: 标签ID。tagname: 标签名称。
dede_feedback (评论表)
- 作用:存储用户对文档的评论。
- 关联:
aid字段指向被评论的文档ID (dede_archives.id)。 - 核心字段:
aid: 被评论的文档ID。username: 评论者用户名。arctitle: 评论的文章标题(冗余存储,方便显示)。dtime: 评论时间。msg: 评论内容。
模型的存储方式
DedeCMS 的强大之处在于其多模型支持,除了默认的“文章”模型,还有图集、软件、商品等。
- 文章:正文存储在
dede_addonarticle表。 - 图集:正文存储在
dede_addonimages表,图片信息(如路径、说明)通常以序列化或特定格式存在body字段中。 - 软件:正文存储在
dede_addonsoft表,软件相关信息(如版本、大小、下载地址)存储在此表的相应字段中。 - 商品:正文存储在
dede_addonproduct表,商品属性(如价格、型号、库存)存储在此表中。
核心规律:
- 所有模型的基本信息(标题、栏目、时间等)都统一存放在
dede_archives表。 dede_archives.channel字段决定了该文档属于哪个内容模型。- 根据不同的
channel值,系统会去对应的dede_addonxxx附加表中读取具体的正文内容。
常用 SQL 查询示例
查询某个栏目下的所有文章(带分页)
SELECT a.id, a.title, a.litpic, a.pubdate, t.typename FROM dede_archives AS a LEFT JOIN dede_arctype AS t ON a.typeid = t.id WHERE a.typeid = 5 AND a.arcrank = 0 ORDER BY a.sortrank ASC LIMIT 0, 10; -- 假设每页10条,这是第一页
查询带特定标签(如“织梦”)的所有文章
SELECT a.id, a.title FROM dede_archives AS a JOIN dede_taglist AS tl ON a.id = tl.aid JOIN dede_tagindex AS ti ON tl.tagid = ti.id WHERE ti.tagname = '织梦' AND a.arcrank = 0;
查询点击量最高的10篇文章
SELECT id, title, click FROM dede_archives WHERE arcrank = 0 ORDER BY click DESC LIMIT 0, 10;
查询推荐(头条)文章
SELECT id, title FROM dede_archives WHERE flag LIKE '%c%' AND arcrank = 0;
| 表名 | 主要作用 | 关键字段 |
|---|---|---|
dede_archives |
文档主表,存储所有内容的核心信息 | id, typeid, title, flag, channel, pubdate |
dede_addonarticle |
文章模型的表 | aid, body |
dede_arctype |
栏目信息表 | id, typename, typedir |
dede_arctiny |
文档列表精简表,用于提升性能 | id, typeid, title, litpic |
dede_taglist |
文档-TAG关联表(多对多) | aid, tagid |
dede_tagindex |
TAG标签信息表 | id, tagname |
dede_feedback |
评论表 | aid, username, msg |
掌握这些核心表的结构和关系,你就能对 DedeCMS 的数据了如指掌,无论是进行简单的数据查询还是复杂的二次开发,都会变得游刃有余。
