dede php 调用自定义字段

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

下面我将为你详细讲解 DedeCMS 中调用自定义字段的几种方法,从最简单到最灵活,并附上实例。

dede php 调用自定义字段
(图片来源网络,侵删)

第一步:准备工作(必须)

在调用任何字段之前,请确保你已经完成了以下设置:

  1. 创建并绑定模型

    • 进入后台 核心 -> 内容模型管理
    • 如果你需要一个文章之外的新模型(产品”、“案例”),点击 增加一个新模型 并设置好字段。
    • 如果只是想在文章里加几个自定义字段,可以直接编辑 普通文章 模型,点击 管理字段 -> 增加新字段
  2. 添加自定义字段

    • 在你选择的模型中,点击 管理字段
    • 点击 增加新字段
    • 字段名:这是数据库中的字段名,只能使用英文字母、数字和下划线price, product_intro
    • 字段提示:在后台发布内容时显示的提示文字,产品价格”、“产品简介”。
    • 字段类型:根据你的需求选择,如 单行文本多行文本编辑器图片附件 等。
    • 字段参数:设置是否必填、默认值等。
    • 保存字段。
  3. 时填写字段

    dede php 调用自定义字段
    (图片来源网络,侵删)
    • 去到前台或后台,发布一篇属于该模型的内容。
    • 你会看到新增的字段已经出现在发布表单中,填入你的数据即可。

第二步:调用自定义字段的方法

假设你已经创建了一个名为 product_intro 的多行文本字段和一个名为 product_price 的单行文本字段。

页(article_article.htm)中调用 - 最简单

这是最常见的情况,在文章的详情页调用该文章自身的自定义字段。

使用 DedeCMS 的原生标签 {dede:field}

  • 调用单行文本/数字字段 (如 product_price)

    dede php 调用自定义字段
    (图片来源网络,侵删)
    <p>产品价格: {dede:field.product_price /}</p>
    • 语法{dede:field.字段名 /}
    • 注意:这里的 字段名 是你在第一步中设置的字段名product_price),而不是字段提示
  • 调用多行文本/编辑器字段 (如 product_intro)

    <div class="intro">
        <h3>产品简介</h3>
        {dede:field.product_intro}
    </div>
    • 注意:对于多行文本,{dede:field} 标签默认会去除 HTML 标签,如果你的 product_intro 是通过编辑器输入的,希望保留 <p><strong> 等标签,需要使用 function='htmlspecialchars_decode' 函数。
    <div class="intro">
        <h3>产品简介</h3>
        {dede:field.product_intro function='htmlspecialchars_decode(@me)'/}
    </div>
    • @me 是 DedeCMS 模板中的特殊变量,代表当前标签的值。htmlspecialchars_decode 函数的作用是将 HTML 实体转换回 HTML 标签。
  • 调用图片字段 (如 product_image)

    图片字段通常保存的是图片路径,调用方式和单行文本一样,但为了在页面上正确显示,通常会加上 {dede:global.cfg_basehost/} 来补全网站地址。

    <img src="{dede:global.cfg_basehost/}{dede:field.product_image /}" alt="产品图片">

在列表页(list_*.htm)或首页(index.htm)中调用 - 需要开启字段

在列表页或首页循环调用文章时,默认情况下为了性能,系统不会加载所有自定义字段,你需要手动开启。

步骤:

  1. 进入后台 系统 -> 系统基本参数 -> 其他选项
  2. 找到 列表附加字段 这个选项。
  3. 在这里填入你希望在列表页调用的字段名,多个字段用英文逗号隔开。 product_intro,product_price,product_image
  4. 保存设置。

在列表页模板中使用 {dede:list}{dede:arclist} 调用

一旦你在后台设置了列表附加字段,就可以在列表循环标签中使用了。

示例 (使用 {dede:list} 标签):

{dede:list pagesize='10'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <!-- 调用产品价格 -->
        <p>价格: [field:product_price /]</p>
        <!-- 调用产品简介(截取50个字符) -->
        <p>简介: [field:product_intro function='cn_substr(@me, 50)'/]...</p>
        <!-- 调用产品图片 -->
        <img src="{dede:global.cfg_basehost/}[field:product_image /]" alt="[field:title/]">
    </li>
{/dede:list}

关键点:

  • 在列表循环中,{dede:field.xxx} 要换成 [field:xxx]
  • function='cn_substr(@me, 50)' 是一个非常实用的函数,用于截取字符串(这里是中文,截取50个字符),避免简介过长影响布局。
  • 同样,图片地址也需要用 {dede:global.cfg_basehost/} 来补全。

使用 SQL 查询调用 - 最灵活

当你需要非常复杂的查询逻辑,或者调用跨模型、跨表的数据时,直接使用 dede:sql 标签是最佳选择。

示例:假设你想在首页调用某个特定栏目(ID=3)下所有产品的价格和名称。

{dede:sql sql="SELECT id, title, product_price FROM `dede_archives` a JOIN `dede_addonarticle` d ON a.id = aid WHERE a.typeid = 3"}
    <div class="product-item">
        <a href="/plus/view.php?aid=[field:id/]">[field:title/]</a>
        <span>价格: [field:product_price /]</span>
    </div>
{/dede:sql}

说明:

  • sql="...":在这里写你的标准 SQL 查询语句。
  • 表名注意
    • dede_archives 是文章主表,包含 id, typeid, title 等基本信息。
    • dede_addonarticle 是文章附加表,表名根据你的模型后缀而定,如果你创建的是“普通文章”,附加表就是 addonarticle;如果你创建的是“产品模型”,附加表可能是 addonproduct,你可以在 dede_addon表 里找到对应的表。
    • 两个表通过 aid (附加表的 aid 字段) 和 id (主表的 id 字段) 关联。
  • [field:字段名 /]:在 dede:sql 标签内,使用 [field:] 来输出查询结果中的列。

总结与最佳实践

场景 推荐方法 标签语法 注意事项
文章详情页 原生标签 {dede:field.字段名 /} 需用 function='htmlspecialchars_decode(@me)'
列表页/首页 原生标签 + 后台设置 [field:字段名 /] 必须在后台 系统基本参数 -> 其他选项 中设置 列表附加字段
复杂/特殊查询 SQL 查询 {dede:sql sql="..."} 需要了解 DedeCMS 的表结构(主表、附加表),注意表名后缀

核心要点回顾:

  1. 字段名:调用时用的是你在后台创建字段时填写的英文“字段名”,而不是“字段提示”。
  2. 作用域:详情页用 {dede:field},列表页用 [field:]
  3. 列表页调用:最容易被忽略的一步,一定要去后台开启“列表附加字段”。
  4. 图片路径:前台调用时,用 {dede:global.cfg_basehost/} 来补全相对路径为绝对路径,可以避免图片加载失败。

希望这份详细的指南能帮助你完全掌握 DedeCMS 自定义字段的调用!

-- 展开阅读全文 --
头像
对于c语言函数 下列叙述正确的是
« 上一篇 2025-12-22
c语言课程设计 机房收费管理系统
下一篇 » 2025-12-22
取消
微信二维码
支付宝二维码

目录[+]