页如何调用自定义字段?

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

第一步:在后台添加自定义字段

这是所有操作的基础,如果你还没有添加字段,请先完成这一步。

dede内容页 调用自定义字段
(图片来源网络,侵删)
  1. 登录 DedeCMS 后台

  2. 进入 【核心】 -> 【内容模型管理】

  3. 找到你当前文章所在的模型(通常是“文章模型”),点击其后面的 【字段管理】

  4. 在字段管理页面,点击 【添加新字段】

    dede内容页 调用自定义字段
    (图片来源网络,侵删)
  5. 填写字段信息:

    • 字段名称: 这是你在数据库中存储数据的列名,只能使用英文字母、数字和下划线myauthor, bookname, price请务必记住这个名字
    • 字段提示: 这个会显示在后台发布文章时,让你填写这个字段的标签,如果你填 myauthor,这里可以填 作者
    • 字段类型: 根据你的需求选择。
      • 文本 (text): 最常用,用于短文本,如作者、来源、关键词等。
      • 编辑器 (editor): 用于大段文本,如文章摘要、详细介绍等,它会生成一个富文本编辑器。
      • 单选 (radio): 用于在几个固定选项中选择一个,如“难度等级:简单、中等、困难”。
      • 多选 (checkbox): 用于在多个固定选项中选择多个,如“标签:技术、生活、娱乐”。
      • 数字 (num): 用于纯数字,如价格、页数等。
      • 图片 (img): 用于上传单张图片,如产品图、作者头像等。
      • 附件 (media): 用于上传文件,如PDF、视频、音频等。
    • 默认值: (可选)设置一个默认值。
    • 是否为空: 选择“否”表示此字段为必填项。
  6. 点击 【保存】

示例: 我们为“文章模型”添加一个名为 myauthor (字段名称) 的文本字段,提示为“本文作者”。

添加成功后,去后台 ,你就会在发布页面上看到你刚刚添加的“本文作者”输入框了,填写一些测试数据并保存文章。


第二步:在内容页模板中调用自定义字段

你的自定义字段数据已经存在数据库里了,接下来就是如何在文章详情页显示它。

直接调用(适用于文本、数字、单选等简单字段)

这是最直接的方法,使用 DedeCMS 的 field

语法格式

{dede:field.你的字段名称/}

示例: 假设我们添加的字段名称是 myauthor,那么在 article_article.htm 模板中,你可以这样调用:

<p>本文作者:{dede:field.myauthor/}</p>

DedeCMS 会自动将其替换为你在后台为该文章填写的“本文作者”的值。


带条件判断的调用(适用于单选、多选、布尔值等)

如果你想在字段有值时才显示,或者根据不同的值显示不同的内容,可以使用 if 条件语句。

语法格式

{dede:field.你的字段名称 runphp='yes'}
    if(@me != '') {
        @me = "显示的前缀:" . @me . "显示的后缀";
    } else {
        @me = "字段为空时显示的内容";
    }
{/dede:field}
  • runphp='yes': 表示开启 PHP 解析。
  • @me: 这是一个特殊变量,代表当前字段的值。
  • 判断值是否为空。

示例1:显示作者,如果为空则不显示任何东西

<span>
    {dede:field.myauthor runphp='yes'}
        if(@me != '') {
            @me = "作者:" . @me;
        } else {
            @me = "";
        }
    {/dede:field}
</span>

示例2:根据单选字段的值显示不同文字 假设我们有一个字段 difficulty (字段名称),选项是“简单”、“中等”、“困难”。

难度等级:
{dede:field.difficulty runphp='yes'}
    if(@me == '简单') {
        @me = "<span style='color:green;'>简单</span>";
    } elseif(@me == '中等') {
        @me = "<span style='color:orange;'>中等</span>";
    } elseif(@me == '困难') {
        @me = "<span style='color:red;'>困难</span>";
    } else {
        @me = "未设置";
    }
{/dede:field}

调用编辑器(editor)类型字段

如果你添加的是“编辑器”类型字段,它的调用方式和普通文本一样,但它会输出带有 HTML 标签的富文本内容。

语法格式

{dede:field.你的字段名称/}

示例: 假设我们添加了一个名为 myintro 的编辑器字段,用来存放“补充说明”。

<div class="supplement-info">
    <h3>补充说明</h3>
    {dede:field.myintro/}
</div>

这样,{dede:field.myintro/} 就会输出你在后台编辑器中输入的所有格式化文本、图片等。


调用图片(img)类型字段

图片字段的调用稍微复杂一点,因为它不仅存储图片路径,还可能存储图片的描述(alt)。

DedeCMS 提供了专门的 img 标签来处理。

语法格式

{dede:field.你的字段名称 function='GetImgUrl(@me)'/}

GetImgUrl() 是 DedeCMS 的一个内置函数,用于从图片字段的数据中提取出纯粹的图片 URL。

示例: 假设我们添加了一个名为 bookcover 的图片字段。

方法 4.1:只显示图片

<img src="{dede:field.bookcover function='GetImgUrl(@me)'}" alt="书籍封面">

方法 4.2:显示图片及其描述 图片字段存储的数据通常是 图片路径||图片描述 这样的格式,我们可以用 split 函数来分割它。

{dede:field.bookcover runphp='yes'}
    list($imgurl, $alt) = explode('||', @me);
    $imgurl = trim($imgurl);
    $alt = trim($alt);
    @me = "<img src='{$imgurl}' alt='{$alt}' />";
{/dede:field}

这段代码会先分割字符串,然后分别取出图片路径和描述,最后组合成一个完整的 <img>


常见问题与解决方案

问题1:调用自定义字段后,前台页面显示 {dede:field.myfield/} 这串代码,而不是实际内容。

原因:这通常是因为模板引擎没有解析这些标签,最常见的原因是模板缓存问题。 解决方案

  1. 进入 DedeCMS 后台,点击 【系统】 -> 【系统基本参数】 -> 【性能选项】**。
  2. 找到 “是否开启模板缓存”,将其设置为 “”。
  3. 点击“保存”。
  4. 刷新你的前台页面,应该就能正常显示了,测试完毕后,建议再把它改回“是”,以提升网站性能。

问题2:后台有字段,前台模板也调用了,但就是没有数据。

原因

  1. 你可能忘记给某一篇具体的文章填写这个自定义字段的数据了,DedeCMS 的自定义字段是独立于每篇文章的,不是全局的。
  2. 检查你的字段名称在模板中是否写错了,比如大小写不一致或拼写错误。

问题3:如何调用多选(checkbox)字段?

多选字段存储的数据是类似 选项1,选项3,选项5 这样的用逗号隔开的字符串,你可以用 explode 函数来分割它。

示例: 假设字段名为 tags,选项是“技术”、“生活”、“娱乐”。

文章标签:
{dede:field.tags runphp='yes'}
    $tags = explode(',', @me);
    $result = '';
    foreach($tags as $tag) {
        $tag = trim($tag);
        if($tag) {
            // 使用超链接形式展示,并链接到搜索该标签的页面
            $result .= "<a href='/plus/search.php?keyword=" . urlencode($tag) . "'>" . $tag . "</a> ";
        }
    }
    @me = $result;
{/dede:field}
你的需求 对应的字段类型 模板调用代码
显示作者、来源等短文本 文本 {dede:field.字段名/}
显示补充说明等大段富文本 编辑器 {dede:field.字段名/}
显示价格、页数等数字 数字 {dede:field.字段名/}
显示单张图片(如封面) 图片 <img src="{dede:field.字段名 function='GetImgUrl(@me)'}">
根据选项显示不同样式 单选 使用 runphp='yes' 进行 if/else 判断
显示多个标签 多选 使用 runphp='yes'explode() 分割处理

希望这份详细的指南能帮助你成功地在 DedeCMS 内容页中调用自定义字段!

-- 展开阅读全文 --
头像
kindeditor与dede如何兼容?
« 上一篇 01-09
dede 整合 ucenter
下一篇 » 01-09

相关文章

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