这是一个非常核心且常用的功能,主要用于创建那些内容项不是简单的文本,而是从几个固定选项中进行选择的情况,文章状态(原创、转载、翻译)、产品颜色(红、黄、蓝)、新闻类型(国内、国际、体育)、用户等级(普通会员、VIP、管理员)等。

核心概念解析
在深入操作前,我们先理解两个关键概念:
-
自定义模型
- 是什么:你可以把它理解为一张“数据表模板”,织梦默认有“文章”、“图集”等模型,但你也可以创建自己的模型,产品”、“招聘信息”、“活动报名”等。
- 作用:定义你的内容频道需要哪些字段。“产品”模型可能需要:产品名称、价格、颜色、品牌、规格等字段,每个字段都需要指定它的类型。
-
枚举值
- 是什么:它是一种字段类型,当你创建一个字段时,可以选择它的类型为“枚举值”。
- 作用:专门用来处理那些内容只能从你预设的几个选项中选择一个的情况,它会生成一个下拉菜单或单选按钮,让发布者方便地选择,而不是手动输入,保证了数据的规范性和一致性。
自定义模型 是建房子的图纸,决定了房子要有几间房(字段)。
枚举值 是其中一间房(字段)的装修风格,规定了这间房只能是“现代简约”、“欧式古典”或“新中式”中的一种。

实战操作:创建一个带“颜色”枚举值的“产品”模型
假设我们要创建一个“产品”频道,每个产品都有一个“颜色”属性,颜色只能是“红色”、“蓝色”、“绿色”或“黑色”中的一个。
第一步:创建自定义模型
- 登录织梦后台,进入【核心】 -> 【内容模型管理】。
- 点击右上角的【增加新模型】按钮。
- 填写模型信息:
- 模型名称:
产品(这个名称会显示在后台菜单) - 表前缀:
dede_addonproduct(织梦会自动生成,通常不用改) - :
产品模型(这个名称用于显示在前台,比如列表页的标题) - 简介:
用于发布公司产品信息(可选) - 字段列表:暂时留空,等下步添加。
- 模型名称:
- 点击【确定】,模型创建成功后,系统会提示你“模型字段管理”,直接点击【继续下一步】。
第二步:添加“枚举值”字段
我们来为“产品”模型添加“颜色”这个字段,并设置其为枚举值。
- 在“模型字段管理”页面,点击【添加新字段】。
- 填写字段信息:
- 字段名称:
color(英文小写,不能有空格,用于程序调用) - :
产品颜色(这个是发布时看到的字段名) - 字段类型:这是最关键的一步! 选择
枚举值。 - 字段描述:
请选择产品的颜色(可选,发布时作为提示) - 默认值:
红色(可选,设置一个默认选项) - 枚举值设置:这是核心中的核心!
- 在这个文本框里,每一行写一个选项。
- 格式为:
选项名称或选项名称|选项值。 - 简单格式(推荐):
红色 蓝色 绿色 黑色 - 自定义值格式(如果后台显示和数据库存储的值不同):
红色|red 蓝色|blue 绿色|green 黑色|black这种方式更灵活,比如后台显示“红色”,但存到数据库里是
red,方便程序处理。
- 是否为必填项:根据需要勾选。
- 其他选项(如列表项、内容项等)可以保持默认或根据需要修改。
- 字段名称:
- 点击【保存】。
你可以继续添加其他字段,price (价格,类型为“数字”),brand (品牌,类型为“文本”) 等。
第三步:生成频道并测试
- 生成频道:所有字段添加完毕后,回到【内容模型管理】页面,点击你刚创建的“产品”模型右侧的【生成HTML】按钮,这一步非常重要,它会在数据库中创建对应的表,并生成必要的后台管理界面。
- 栏目:进入【栏目管理】 -> 【添加栏目】。
- 选择栏目类型为“频道”。
- 在“选择内容模型”的下拉菜单中,选择你刚刚创建的
产品模型。 - 其他信息正常填写,比如栏目名称、目录等。
- :进入【内容发布】 -> 【添加内容】,选择你刚才创建的“产品”栏目。
- 你会看到,除了标题、简介等默认字段,多出了一个 “产品颜色” 的字段。
- 点击该字段,会看到一个下拉菜单,里面正是你设置的“红色”、“蓝色”、“绿色”、“黑色”选项。
- 选择一个颜色,填写其他信息,发布】。
至此,一个带有枚举值的自定义模型就创建成功了!
前台如何调用枚举值的数据?
在模板文件(通常是 list_article.htm 或 article_article.htm)中,调用枚举值字段有几种常用方法。
假设我们的字段名是 color。
直接调用(最简单)
<p>产品颜色:{dede:field.color/}</p>
如果后台选择的是“红色”,前台就会直接显示“红色”。
根据数据库值进行判断(更灵活)
如果你在设置枚举值时使用了 红色|red 的格式,那么数据库里存的是 red,这时你可能想在后台显示“红色”,但前台需要根据 red 这个值来做判断(比如改变文字颜色)。
{dede:field.name='color' runphp='yes'}
$colorValue = @me; // 获取当前字段的值,'red'
$colorName = '';
switch($colorValue) {
case 'red':
$colorName = '<span style="color:red;">红色</span>';
break;
case 'blue':
$colorName = '<span style="color:blue;">蓝色</span>';
break;
case 'green':
$colorName = '<span style="color:green;">绿色</span>';
break;
case 'black':
$colorName = '<span style="color:black;">黑色</span>';
break;
default:
$colorName = @me; // 如果没有匹配,显示原始值
}
@me = $colorName; // 将处理后的结果赋值给 @me,输出到前台
{/dede:field}
这段代码会根据数据库中存储的值,输出带有不同CSS样式的颜色名称。
使用 GetEnumValue 标签(织梦专用,推荐)
织梦提供了一个专门的标签 GetEnumValue 来简化这个操作,它可以直接根据字段名和枚举值ID(或值)来获取对应的显示名称。
注意:GetEnumValue 通常用于循环(如 {dede:list} 或 {dedarclist})中。
{dede:list pagesize='10'}
<li>
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<!-- 调用颜色字段 -->
<p>颜色:[field:color function="GetEnumValue(@me, 'color')"/]</p>
</li>
{/dede:list}
@me:在函数中代表当前字段的值(如 'red')。'color':是你的字段名。GetEnumValue会根据这个字段名去查找枚举设置,然后返回与@me对应的显示名称(如 '红色')。
常见问题与注意事项
- 模型修改后需要重新生成HTML:如果你修改了模型(比如增删改了字段),一定要记得在【内容模型管理】里点击对应模型的【生成HTML】按钮,否则后台界面和数据库不会更新。
- 枚举值不要有特殊符号:在填写枚举值选项时,避免使用 、 等特殊符号,以免与系统分隔符冲突,如果必须使用,请确保格式统一。
- 字段命名规范:字段名(英文)最好使用小写字母、数字和下划线,避免使用中文和空格,这是良好的编程习惯,也能避免一些潜在的兼容性问题。
- 与“单选按钮”的区别:在字段类型中,还有一个“单选按钮”类型,它和“枚举值”很像,但“单选按钮”更适合选项很少(比如2-3个)且希望更直观的场景,而“枚举值”适合选项较多的情况,能节省界面空间。
通过以上步骤,你就可以熟练地在织梦CMS中使用自定义模型和枚举值功能,让你的网站内容管理更加规范和高效。
