首页 > CMS教程 > DEDECMS > 正文

DedeCMS数据模型如何创建?自定义字段怎么添加?

畫卷琴夢
发布: 2025-09-09 09:45:02
原创
246人浏览过
创建DedeCMS数据模型需进入“内容模型管理”添加新模型并配置表名、名称等信息,随后通过“管理字段”添加自定义字段,选择合适的数据类型如varchar、int、img等以适配不同内容需求;自定义模型相比默认模型具有更高的数据独立性、管理清晰度和模板调用便利性,适用于多类型、差异化内容的网站结构;在前台模板中调用自定义字段时,需在arclist标签中使用addfields属性声明字段,并通过[field:字段名/]输出内容,图片、多图、复选框等复杂类型需结合HTML标签或PHP代码解析处理,确保数据正确展示。

dedecms数据模型如何创建?自定义字段怎么添加?

DedeCMS中创建数据模型和添加自定义字段,核心操作在于通过后台的“核心”或“模块”菜单进入“内容模型管理”,在这里完成模型的增删改以及字段的配置。这过程说起来简单,但其实涉及到对内容结构化的理解,以及如何选择合适的字段类型来承载你的数据。搞清楚这些,后续的内容管理和模板调用才能顺畅。

解决方案

要创建DedeCMS数据模型和添加自定义字段,你可以按照以下步骤操作,这套流程基本上涵盖了从无到有的整个过程:

首先,登录你的DedeCMS后台。

1. 创建新的数据模型: 进入后台后,找到左侧菜单栏的“核心”或“模块”选项(具体看你的DedeCMS版本,早期版本多在“核心”,新版可能在“模块”下)。 点击“内容模型管理”。 你会看到一个列表,展示了当前系统已有的内容模型,比如文章、图片、软件等。 点击页面上方的“增加新模型”按钮。 在新模型创建页面,你需要填写几个关键信息:

  • 模型名称: 这是一个给人看的名称,比如“产品展示”、“案例分享”。
  • 模型表名: 这个非常重要,是数据库中实际的表名。DedeCMS通常会强制你使用
    dede_addon_
    登录后复制
    作为前缀,后面跟着你自定义的表名,比如
    dede_addon_product
    登录后复制
    。记住,表名只能是小写字母和数字,不能有特殊字符。
  • 描述: 简单说明这个模型是用来干什么的。
  • 是否启用: 勾选后,这个模型才能被使用。
  • 是否主表: 通常自定义模型都是作为副表存在的,所以这里一般不勾选。除非你真的想构建一个全新的内容体系,但那会复杂很多。 填写完毕后,点击“提交”按钮。这样,一个新的数据模型就创建好了。

2. 为数据模型添加自定义字段: 回到“内容模型管理”页面,找到你刚刚创建或需要编辑的那个数据模型。 在模型名称的右侧,点击“管理字段”链接。 进入字段管理页面后,你会看到当前模型已有的字段(比如

aid
登录后复制
,
typeid
登录后复制
,
title
登录后复制
等,这些是系统自带的)。 点击页面上方的“增加字段”按钮。 在新字段添加页面,你需要详细配置这个字段:

  • 字段名称: 数据库字段名,同样只能是小写字母和数字,不能有特殊字符,比如
    product_price
    登录后复制
    case_description
    登录后复制
  • 字段提示: 这是在后台发布内容时,给编辑人员看的提示,比如“产品价格”、“案例详细描述”。
  • 数据类型: 这是核心,选择最符合你数据存储需求的数据类型。比如,文本用
    varchar
    登录后复制
    text
    登录后复制
    ,数字用
    int
    登录后复制
    或 `
    decimal
    登录后复制
    ,图片用
    img
    登录后复制
    ,多选框用
    checkbox
    登录后复制
    等。
  • 字段长度: 根据数据类型设置,比如
    varchar(255)
    登录后复制
  • 默认值: 如果字段没有输入内容,会使用的默认值。
  • 是否必填: 勾选后,发布内容时该字段必须填写。
  • 表单显示模式: 决定这个字段在后台发布页面如何展示,比如单行文本、多行文本、图片上传、下拉菜单等。
  • 字段属性: 比如是否允许HTML、是否前台显示等,根据需要勾选。 配置完成后,点击“提交”按钮。重复这个过程,为你的模型添加所有需要的自定义字段。

完成这些步骤后,你就可以在DedeCMS后台通过“内容管理”菜单,选择你新建的模型来发布内容了。

DedeCMS自定义数据模型与默认模型的区别在哪里?为什么要创建自定义模型?

说实话,DedeCMS的默认模型,也就是“文章”、“图片”、“软件”这些,它们固然能满足大部分基础内容发布的需求,但一旦你的网站内容类型变得多元化,比如要展示产品、服务案例、招聘信息,甚至是更复杂的课程体系,你就会发现默认模型有点捉襟见肘了。

区别在哪? 最核心的区别在于数据结构的灵活性。默认模型有它一套固定的字段,比如文章模型就自带了标题、作者、来源、内容、缩略图这些。你当然可以在文章模型里添加自定义字段来适配产品信息,比如“产品价格”、“产品型号”。但这样一来,你发布“文章”和发布“产品”就都挤在同一个内容模型里了。这就像你把衣服、鞋子、锅碗瓢盆都塞在一个抽屉里,虽然能塞下,但找起来会很麻烦,管理起来也混乱。

为什么要创建自定义模型? 对我而言,创建自定义模型主要有几个非常实际的好处:

  1. 数据独立性和清晰度: 每个内容类型都有自己独立的数据库表和字段集。产品有产品的字段,案例有案例的字段。这样数据结构一目了然,管理起来逻辑清晰,查找、修改特定类型的内容也更方便。
  2. 模板开发的便利性: 当你的数据结构清晰后,前端模板的开发也会变得异常简单。你不需要在
    arclist
    登录后复制
    标签里写一堆
    if else
    登录后复制
    来判断当前内容是不是产品,然后去调用产品特有的字段。每个模型都有对应的模板,各司其职。
  3. 避免数据冗余和无效字段: 如果都在文章模型里添加字段,那么发布一篇文章时,那些“产品价格”、“产品型号”字段就成了无效的,但它们依然存在于数据库中。自定义模型则能确保每个模型只包含它真正需要的字段。
  4. 权限管理更精细: 有时候你可能希望某个编辑只能发布“产品”,而另一个编辑只能发布“新闻”。自定义模型能让你更细致地进行后台权限分配。

所以,当你的网站内容需要高度定制化,或者有多种差异很大的内容类型时,自定义模型几乎是DedeCMS的必选项。这不仅仅是为了好看,更是为了网站的长期稳定运行和高效管理。

在DedeCMS中添加自定义字段时,有哪些常见的数据类型和它们的应用场景?

选择正确的数据类型是添加自定义字段时最关键的一步,这直接影响到数据存储的效率、完整性以及后续的查询和展示。我见过不少人图省事,所有文本都用

text
登录后复制
,结果数据库里一堆不必要的长字符串,或者图片路径也存成
varchar
登录后复制
,导致调用时还得手动拼
<img>
登录后复制
标签。这里我列举一些常见的DedeCMS自定义字段数据类型及其应用场景:

  • 单行文本 (varchar):

    • 应用场景: 最常用的类型。适用于存储简短的文本信息,比如:产品型号、作者姓名、联系电话、URL链接、简短的标题、关键词等。
    • 特点: 需要设置字段长度,比如
      varchar(255)
      登录后复制
      。效率高,适合索引。
  • 多行文本 (text):

    • 应用场景: 存储较长的纯文本内容,不带格式。比如:产品简介、案例描述、用户留言、不含HTML的文章内容摘要。
    • 特点: 长度理论上无限制(受数据库本身限制),但不能直接解析HTML标签。
  • HTML文本 (htmltext):

    • 应用场景: 存储富文本内容,需要使用WYSIWYG编辑器。比如:产品详细介绍、案例正文、新闻稿件、任何需要排版、插入图片和链接的内容。
    • 特点: 后台会提供一个富文本编辑器,方便用户编辑带有格式的内容。
  • 整数 (int):

    • 应用场景: 存储整数值。比如:产品库存数量、文章阅读量、排序权重、年份、价格(如果不需要小数)。
    • 特点: 需要设置长度,比如
      int(10)
      登录后复制
  • 小数 (decimal):

    • 应用场景: 存储带有小数点的数值。比如:产品价格、评分、重量、尺寸。
    • 特点: 需要设置总位数和小数位数,如
      decimal(10,2)
      登录后复制
      表示总共10位,其中2位是小数。这比用
      float
      登录后复制
      double
      登录后复制
      更精确,尤其在涉及货时。
  • 日期时间 (datetime):

    • 应用场景: 存储日期和时间。比如:活动开始时间、产品发布日期、到期时间。
    • 特点: 后台通常会提供日期时间选择器
  • 图片 (img):

    阿里云-虚拟数字人
    阿里云-虚拟数字人

    阿里云-虚拟数字人是什么? ...

    阿里云-虚拟数字人 2
    查看详情 阿里云-虚拟数字人
    • 应用场景: 单张图片上传。比如:产品主图、案例缩略图、作者头像。
    • 特点: 上传后存储图片路径,调用时需要手动拼接
      <img>
      登录后复制
      标签。
  • 多图片 (images):

    • 应用场景: 允许多张图片上传。比如:产品图集、案例图片画廊。
    • 特点: 通常会存储一个图片路径的列表,调用时需要循环处理。DedeCMS自带的这个多图上传功能,在模板里调用起来会稍微复杂一点,可能需要借助
      php
      登录后复制
      标签来解析。
  • 文件 (file):

    • 应用场景: 单个文件上传。比如:产品说明书PDF、软件下载包、附件。
    • 特点: 存储文件路径。
  • 下拉菜单 (select):

    • 应用场景: 提供预设选项供用户选择。比如:产品分类、状态(上架/下架)、颜色、尺寸。
    • 特点: 需要在后台配置选项值,通常是
      值=显示文本
      登录后复制
      的格式。
  • 单选按钮 (radio):

    • 应用场景: 提供一组选项,用户只能选择其中一个。比如:是否推荐(是/否)、性别。
    • 特点: 类似下拉菜单,但界面表现不同。
  • 复选框 (checkbox):

    • 应用场景: 提供一组选项,用户可以选择一个或多个。比如:产品特性(防水、防震、高像素)、服务范围。
    • 特点: 多个选项的值通常会以逗号分隔或序列化形式存储,调用时需要解析。

选择合适的字段类型,不仅能让你的数据存储更规范,也能在后续的模板开发和数据维护中省去很多麻烦。

如何在DedeCMS前台模板中调用自定义数据模型的字段内容?

在DedeCMS前台模板中调用自定义数据模型的字段内容,是实现动态展示的关键一步。这部分操作,说白了就是利用DedeCMS的标签库来“抓取”数据库里对应字段的值。不过,不同的字段类型,以及在不同的标签(比如

arclist
登录后复制
archives
登录后复制
)里调用,方法上会有些许差异。

最常见的情况,你会在

arclist
登录后复制
标签里循环调用文章列表,或者在
archives
登录后复制
标签里显示单篇文章的详细内容。

1. 在

arclist
登录后复制
标签中调用自定义字段:
arclist
登录后复制
标签是DedeCMS里最常用的列表循环标签。要让它能识别并输出自定义字段,你需要在
addfields
登录后复制
属性中明确指定这些字段。

{dede:arclist typeid='1' row='10' addfields='product_price,product_image,product_feature'}
    <li>
        <a href="[field:arcurl /]">[field:title /]</a>
        <!-- 调用单行文本或整数等普通字段 -->
        <p>价格: [field:product_price /] 元</p>

        <!-- 调用图片字段,需要手动拼接<img>标签 -->
        <img src="[field:product_image /]" alt="[field:title /]" width="100" height="100">

        <!-- 调用多选框(checkbox)字段,可能需要进一步处理 -->
        <p>特点: [field:product_feature /]</p>
    </li>
{/dede:arclist}
登录后复制

说明:

  • addfields='product_price,product_image,product_feature'
    登录后复制
    :这里列出了你希望在循环中调用的自定义字段的名称,用逗号分隔。
  • [field:product_price /]
    登录后复制
    :这是最基本的调用方式,直接输出字段值。适用于
    varchar
    登录后复制
    int
    登录后复制
    decimal
    登录后复制
    text
    登录后复制
    datetime
    登录后复制
    等字段。
  • [field:product_image /]
    登录后复制
    :图片字段通常只输出图片路径,所以你需要用
    <img>
    登录后复制
    标签把它包起来。
  • [field:product_feature /]
    登录后复制
    :对于
    checkbox
    登录后复制
    select
    登录后复制
    字段,如果存储的是多个值(如逗号分隔),这里会直接输出原始值。如果你需要显示对应的文本,可能需要写一些
    php
    登录后复制
    代码进行转换,或者利用DedeCMS的一些特定函数(如果字段类型在DedeCMS内部有特殊处理)。

2. 在

archives
登录后复制
标签中调用自定义字段(单页内容):
archives
登录后复制
标签通常用于显示文章的详细页面内容。它默认就能获取到所有自定义字段。

{dede:archives row='1' id='[field:id /]'}
    <h1>[field:title /]</h1>
    <p>发布时间: [field:pubdate function="MyDate('Y-m-d H:i',@me)" /]</p>

    <!-- 调用自定义字段 -->
    <p>产品型号: [field:product_model /]</p>
    <p>产品价格: [field:product_price /] 元</p>
    <p>详细描述: [field:product_description /]</p>

    <!-- 调用图片字段 -->
    <img src="[field:product_main_image /]" alt="[field:title /]" class="product-main-img">

    <!-- 调用多图字段 (images),这通常需要更复杂的处理 -->
    {dede:php}
        $img_list = explode(',', @me->fields['product_gallery']); // 假设多图字段名为 product_gallery
        foreach($img_list as $img_url){
            if(!empty($img_url)){
                echo "<img src='{$img_url}' alt='图片' class='gallery-thumb'>";
            }
        }
    {/dede:php}

    <!-- 调用HTML文本字段 -->
    <div class="product-content">
        [field:product_detail_html /]
    </div>
{/dede:archives}
登录后复制

说明:

  • [field:product_model /]
    登录后复制
    :直接调用字段名即可。
  • [field:product_main_image /]
    登录后复制
    :同样需要
    <img>
    登录后复制
    标签包裹。
  • [field:product_detail_html /]
    登录后复制
    :HTML文本字段会直接输出带有格式的内容。
  • 关于多图字段(images)或复选框(checkbox)字段的调用: 这类字段通常在数据库中存储的是一个序列化字符串或者逗号分隔的字符串。DedeCMS的
    [field:fieldname /]
    登录后复制
    标签默认只会输出原始字符串。如果你想以更友好的方式展示,比如循环显示多张图片,或者把复选框的值转换成对应的文本,你就需要借助
    {dede:php}
    登录后复制
    标签,在模板中编写一些PHP代码来解析这些数据。上面示例中的多图调用就是一例。

调用自定义字段,核心就是

[field:你的字段名 /]
登录后复制
,但在实际应用中,特别是处理图片、多图、文件、多选框这类字段时,你可能需要结合HTML标签、CSS样式,甚至一些简单的PHP逻辑来达到你想要的展示效果。这块是DedeCMS模板开发中相对灵活但也容易“卡壳”的地方,多实践、多查看DedeCMS官方文档和社区讨论,会帮你少走很多弯路。

以上就是DedeCMS数据模型如何创建?自定义字段怎么添加?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号