织梦自定义枚举值如何设置与使用?

99ANYc3cd6
预计阅读时长 15 分钟
位置: 首页 织梦建站 正文

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

织梦自定义 枚举值
(图片来源网络,侵删)

核心概念解析

在深入操作前,我们先理解两个关键概念:

  1. 自定义模型

    • 是什么:你可以把它理解为一张“数据表模板”,织梦默认有“文章”、“图集”等模型,但你也可以创建自己的模型,产品”、“招聘信息”、“活动报名”等。
    • 作用:定义你的内容频道需要哪些字段。“产品”模型可能需要:产品名称、价格、颜色、品牌、规格等字段,每个字段都需要指定它的类型。
  2. 枚举值

    • 是什么:它是一种字段类型,当你创建一个字段时,可以选择它的类型为“枚举值”。
    • 作用:专门用来处理那些内容只能从你预设的几个选项中选择一个的情况,它会生成一个下拉菜单或单选按钮,让发布者方便地选择,而不是手动输入,保证了数据的规范性和一致性。

自定义模型 是建房子的图纸,决定了房子要有几间房(字段)。 枚举值 是其中一间房(字段)的装修风格,规定了这间房只能是“现代简约”、“欧式古典”或“新中式”中的一种。

织梦自定义 枚举值
(图片来源网络,侵删)

实战操作:创建一个带“颜色”枚举值的“产品”模型

假设我们要创建一个“产品”频道,每个产品都有一个“颜色”属性,颜色只能是“红色”、“蓝色”、“绿色”或“黑色”中的一个。

第一步:创建自定义模型

  1. 登录织梦后台,进入【核心】 -> 【内容模型管理】。
  2. 点击右上角的【增加新模型】按钮。
  3. 填写模型信息:
    • 模型名称产品 (这个名称会显示在后台菜单)
    • 表前缀dede_addonproduct (织梦会自动生成,通常不用改)
    • 产品模型 (这个名称用于显示在前台,比如列表页的标题)
    • 简介用于发布公司产品信息 (可选)
    • 字段列表:暂时留空,等下步添加。
  4. 点击【确定】,模型创建成功后,系统会提示你“模型字段管理”,直接点击【继续下一步】。

第二步:添加“枚举值”字段

我们来为“产品”模型添加“颜色”这个字段,并设置其为枚举值。

  1. 在“模型字段管理”页面,点击【添加新字段】。
  2. 填写字段信息:
    • 字段名称color (英文小写,不能有空格,用于程序调用)
    • 产品颜色 (这个是发布时看到的字段名)
    • 字段类型这是最关键的一步! 选择 枚举值
    • 字段描述请选择产品的颜色 (可选,发布时作为提示)
    • 默认值红色 (可选,设置一个默认选项)
    • 枚举值设置这是核心中的核心!
      • 在这个文本框里,每一行写一个选项
      • 格式为:选项名称选项名称|选项值
      • 简单格式(推荐)
        红色
        蓝色
        绿色
        黑色
      • 自定义值格式(如果后台显示和数据库存储的值不同):
        红色|red
        蓝色|blue
        绿色|green
        黑色|black

        这种方式更灵活,比如后台显示“红色”,但存到数据库里是red,方便程序处理。

    • 是否为必填项:根据需要勾选。
    • 其他选项(如列表项、内容项等)可以保持默认或根据需要修改。
  3. 点击【保存】。

你可以继续添加其他字段,price (价格,类型为“数字”),brand (品牌,类型为“文本”) 等。

第三步:生成频道并测试

  1. 生成频道:所有字段添加完毕后,回到【内容模型管理】页面,点击你刚创建的“产品”模型右侧的【生成HTML】按钮,这一步非常重要,它会在数据库中创建对应的表,并生成必要的后台管理界面。
  2. 栏目:进入【栏目管理】 -> 【添加栏目】。
    • 选择栏目类型为“频道”。
    • 在“选择内容模型”的下拉菜单中,选择你刚刚创建的 产品 模型。
    • 其他信息正常填写,比如栏目名称、目录等。
  3. :进入【内容发布】 -> 【添加内容】,选择你刚才创建的“产品”栏目。
    • 你会看到,除了标题、简介等默认字段,多出了一个 “产品颜色” 的字段。
    • 点击该字段,会看到一个下拉菜单,里面正是你设置的“红色”、“蓝色”、“绿色”、“黑色”选项。
    • 选择一个颜色,填写其他信息,发布】。

至此,一个带有枚举值的自定义模型就创建成功了!


前台如何调用枚举值的数据?

在模板文件(通常是 list_article.htmarticle_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 对应的显示名称(如 '红色')。

常见问题与注意事项

  1. 模型修改后需要重新生成HTML:如果你修改了模型(比如增删改了字段),一定要记得在【内容模型管理】里点击对应模型的【生成HTML】按钮,否则后台界面和数据库不会更新。
  2. 枚举值不要有特殊符号:在填写枚举值选项时,避免使用 、 等特殊符号,以免与系统分隔符冲突,如果必须使用,请确保格式统一。
  3. 字段命名规范:字段名(英文)最好使用小写字母、数字和下划线,避免使用中文和空格,这是良好的编程习惯,也能避免一些潜在的兼容性问题。
  4. 与“单选按钮”的区别:在字段类型中,还有一个“单选按钮”类型,它和“枚举值”很像,但“单选按钮”更适合选项很少(比如2-3个)且希望更直观的场景,而“枚举值”适合选项较多的情况,能节省界面空间。

通过以上步骤,你就可以熟练地在织梦CMS中使用自定义模型和枚举值功能,让你的网站内容管理更加规范和高效。

-- 展开阅读全文 --
头像
dede如何调用热门标签?
« 上一篇 04-21
dede文章高级参数
下一篇 » 04-21

相关文章

取消
微信二维码
支付宝二维码

目录[+]