dede_sys_enum 是 DedeCMS(织梦内容管理系统)数据库中的一个核心系统表,主要用于存储系统中各种枚举类型的配置信息,你可以把它理解为一个“系统配置字典”或“选项列表”。

(图片来源网络,侵删)
表的作用和重要性
在网站开发中,我们经常需要使用一些固定选项的列表,
- 文章状态:
(仅站长可见),(推荐),(跳转) - 标签类型:
(文本标签),(单选标签),(多选标签) - 会员等级:
(普通会员),(高级会员),(VIP会员) - 文章模型字段的选项:比如一个“颜色”字段,选项是“红、黄、蓝”。
dede_sys_enum 表就是用来统一存储和管理这些“键值对”(Key-Value)的地方,这样做的好处是:
- 统一管理:所有枚举项都集中在一个表中,方便维护和修改。
- 动态配置:后台管理员可以通过管理界面(如“系统” -> “系统基本参数” -> “枚举管理”)来动态地添加、修改或删除这些选项,而无需修改代码。
- 代码复用:前端和后端在调用这些选项时,只需要查询这个表即可,避免了在代码中硬编码,提高了灵活性和可维护性。
表结构分析
dede_sys_enum 表的结构非常简单,通常包含以下字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
id |
mediumint(8) unsigned |
主键,自增ID,唯一标识每一枚举项。 |
envalue |
char(20) |
枚举值,这是选项的实际值,通常用于程序判断。0, 1, 2 或 red, yellow。 |
ename |
varchar(50) |
枚举名称,这是选项的显示名称,用于在前端展示给用户看。“红色”, “黄色”。 |
egroup |
char(20) |
枚举分组,这是最重要的字段,用于将不同的枚举项进行分类。articleflag 代表文章状态,arcatt 代表文章属性。 |
edisorder |
smallint(5) unsigned |
排序,数字越小,显示顺序越靠前。 |
字段详解与实例
让我们通过几个具体的例子来理解这些字段。

(图片来源网络,侵删)
示例1:文章状态
文章的“状态”功能(如“仅站长可见”、“推荐”等)就是通过这个表实现的。
| id | envalue | ename | egroup | edisorder |
|---|---|---|---|---|
| 1 | h | 推荐 | articleflag | 1 |
| 2 | c | 跳转 | articleflag | 2 |
| 3 | p | 仅站长可见 | articleflag | 3 |
egroup = 'articleflag': 这组数据专门用于管理文章的标志。envalue: 在程序中,判断文章是否被推荐,可能会检查envalue是否为'h'。ename: 在后台文章编辑页面,下拉菜单里显示的就是“推荐”、“跳转”这些ename。edisorder: “推荐”的edisorder是1,所以它排在最前面。
示例2:会员等级
| id | envalue | ename | egroup | edisorder |
|---|---|---|---|---|
| 1 | 0 | 普通会员 | memberrank | 1 |
| 2 | 1 | 高级会员 | memberrank | 2 |
| 3 | 2 | VIP会员 | memberrank | 3 |
egroup = 'memberrank': 这组数据用于管理会员等级。- 程序根据
envalue(0, 1, 2) 来判断用户的等级,并显示对应的ename(普通会员, 高级会员, VIP会员)。
示例3:自定义字段的选项
假设你在后台为文章模型添加了一个名为“颜色”的单选标签,选项是“红、黄、蓝”,这些数据也会被存入 dede_sys_enum 表。
| id | envalue | ename | egroup | edisorder |
|---|---|---|---|---|
| 1 | red | 红 | color_field | 1 |
| 2 | yellow | 黄 | color_field | 2 |
| 3 | blue | 蓝 | color_field | 3 |
egroup = 'color_field': 注意,这里的egroup通常是由系统根据你自定义的字段名动态生成的,用来唯一标识这个字段的所有选项。- 程序在读取这个字段的值时,会根据
egroup查询出所有选项,生成一个下拉菜单供用户选择。
如何在代码中使用?
开发者通常通过 SQL 查询来获取这些数据。
PHP 示例:获取所有文章状态
// 引入数据库配置文件
require_once(DEDEROOT.'/data/config.php');
// 连接数据库
$link = mysql_connect($cfg_dbhost, $cfg_dbuser, $cfg_dbpwd);
mysql_select_db($cfg_dbname, $link);
mysql_query("SET NAMES 'utf8'", $link);
// SQL查询:获取 egroup 为 'articleflag' 的所有项,并按排序号升序排列
$sql = "SELECT envalue, ename FROM `dede_sys_enum` WHERE egroup = 'articleflag' ORDER BY edisorder ASC";
$result = mysql_query($sql, $link);
$article_flags = array();
while ($row = mysql_fetch_assoc($result)) {
$article_flags[$row['envalue']] = $row['ename'];
}
// 输出结果
print_r($article_flags);
// 关闭连接
mysql_close($link);
输出结果:
Array
(
[h] => 推荐
[c] => 跳转
[p] => 仅站长可见
)
后台管理
在 DedeCMS 后台,你可以很方便地管理这些枚举项。
路径:系统 -> 系统基本参数 -> 枚举管理
你可以看到所有分组的枚举项,并可以对它们进行增加、修改、删除操作,这也是 DedeCMS 灵活性的一大体现。
dede_sys_enum 是 DedeCMS 的一个核心配置表,它以“键值对”的形式存储了系统中所有需要选项列表的数据,通过 egroup 字段进行分类,使得系统可以灵活地管理文章状态、会员等级、自定义字段选项等,而无需修改代码,极大地提高了系统的可维护性和扩展性,如果你要二次开发 DedeCMS,理解这个表的结构和用法至关重要。
