dede新加字段如何正确调用?

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

第一步:在后台添加新字段

这是所有操作的基础,你需要先在 DedeCMS 的后台系统中为你需要修改的模型(比如文章模型、图集模型等)添加一个自定义字段。

dede 新加字段调用
(图片来源网络,侵删)
  1. 登录后台:使用管理员账号登录你的 DedeCMS 后台。

  2. 进入字段管理

    • 路径通常是:[核心] -> 模型管理] -> 模型管理]
    • 点击你想要修改的模型后面的 [管理字段] 按钮,如果你想在文章里添加一个字段,就点击文章模型(默认名为 "文章")后面的 [管理字段]
  3. 添加新字段

    • 在字段管理页面,点击右上角的 [增加新字段] 按钮。
    • 在弹出的页面中,填写以下关键信息:
      • 字段名:这是数据库中的字段名,只能使用英文字母、数字和下划线,且必须以字母开头。author_intro (作者简介)、video_url (视频链接)、source_url (来源网址)。这是最重要的,模板调用时要用到它。
      • 字段类型:根据你的需求选择,常用的有:
        • text:单行文本,适用于简短的文字,如作者、来源等。
        • textarea:多行文本,适用于较长的文字,如摘要、简介等。
        • editor:编辑器,等同于文章内容,可以插入图片、格式等,非常强大。
        • varchar:同单行文本。
        • datetime:日期时间,适用于发布时间、活动时间等。
        • img:图片,可以上传一张图片。
        • images:多图,可以上传多张图片,并以幻灯片等形式展示。
        • media:多媒体,可以上传视频、音频、Flash等。
      • 字段说明:在后台发布内容时显示的字段名称,可以用中文。“作者简介”、“视频地址”。
      • 后台栏目支持:勾选这个,可以在后台发布/编辑文章时看到并填写这个字段。
      • 摘要:如果勾选,这个字段的内容可以在列表的摘要位置调用。
      • 是否为必填项:根据需要勾选。
    • 填写完毕后,点击 [保存] 按钮。
  4. 更新缓存:添加完字段后,系统会提示你更新数据表,请务必点击 [一键更新] 按钮,或者到 [系统] -> [SQL命令行工具] 中执行 dede_archives 表的结构更新,这一步至关重要,否则字段不会被真正添加到数据库中。

    dede 新加字段调用
    (图片来源网络,侵删)

第二步:在模板文件中调用字段

这是实现最终显示效果的关键,DedeCMS 提供了多种标签来调用字段,最常用的是 field

在文章详情页 (article_article.htm) 调用

这是最简单直接的情况,详情页的模板可以直接通过 {field:字段名/} 来调用。

示例: 假设你添加了一个字段名为 video_url,字段说明为“视频地址”,类型为 media

article_article.htm 模板中,你想在文章内容下方显示这个视频,可以这样做:

{dede:field name='body'/}
<!-- 在这里调用你的新字段 -->
<div class="video-container">
    <h3>相关视频</h3>
    {dede:field name='video_url'/}
</div>
<!-- 如果是编辑器类型,直接显示即可 -->
{dede:field name='author_intro'/}
  • video_urlmedia 类型,{dede:field name='video_url'/} 会自动解析成 <video><embed>
  • 如果是 textareatext 类型,它会直接输出文本内容。

在列表页 (list_*.htm) 和首页 (index.htm) 调用

在列表页和首页,情况稍微复杂一些,因为它们需要循环调用多篇文章,你需要使用 {dede:list}{dede:arclist}

方法 1:直接在循环标签内使用 field

dede 新加字段调用
(图片来源网络,侵删)

这是最简单的方法,但前提是你在添加字段时,勾选了 摘要” 选项。

示例: 假设你有一个字段 source_url (来源网址),类型为 text,并且你勾选了“前台内容摘要”。

list_*.htm 模板的 {dede:list} 循环中:

{dede:list pagesize='10'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <!-- 直接调用,如果勾选了“前台内容摘要”则可用 -->
        来源:<a href="[field:source_url/]" target="_blank">[field:source_url/]</a>
    </li>
{/dede:list}

方法 2:使用 arrayphp 标签(推荐,更灵活)

如果你没有勾选“前台内容摘要”,或者需要更复杂的逻辑,推荐使用 array 标签,这是最常用和最可靠的方法。

示例: 继续使用 source_url 字段。

list_*.htmindex.htm 中:

{dede:list pagesize='10'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <!-- 使用 array 标签来获取额外的字段 -->
        [field:array runphp='yes']
            if (@me['source_url'] != '') {
                @me = "<span>来源:<a href='".@me['source_url']."' target='_blank'>查看原文</a></span>";
            } else {
                @me = '';
            }
        [/field:array]
    </li>
{/dede:list}

代码解析

  • [field:array ...][/field:array]:获取当前文章的所有自定义字段,并将其存为一个数组。
  • runphp='yes':允许在标签内使用 PHP 代码。
  • @me:在 runphp 中,@me 代表当前标签的值,它一开始就是整个字段数组。
  • @me['source_url']:通过键名 source_url 来访问你添加的字段值。
  • if (...) { ... } else { ... }:进行判断,如果字段值不为空,则输出一个包含链接的 HTML 片段;否则输出空。

方法 3:使用 {dede:php} 标签(适合高级用户)

如果你熟悉 PHP,{dede:php} 标签提供了最大的灵活性。

{dede:list pagesize='10'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        [field:id/]
        {dede:php}
            $aid = $GLOBALS['arcid']; // 获取当前文章的ID
            $row = $GLOBALS['dsql']->GetOne("SELECT source_url FROM `dede_archives` WHERE id = $aid");
            if($row['source_url']){
                echo "<span>来源:<a href='".$row['source_url']."' target='_blank'>查看原文</a></span>";
            }
        {/dede:php}
    </li>
{/dede:list}

这种方法直接执行 SQL 查询,性能上可能不如 array 方法,但在处理非常复杂的逻辑时很有用。


总结与最佳实践

场景 推荐方法 示例代码
文章详情页 直接使用 field {dede:field name='my_field'/}
列表页/首页 array + runphp (最推荐) [field:array runphp='yes']...[/field:array]
列表页/首页 直接使用 field (需勾选“前台摘要”) [field:my_field/]
复杂逻辑 使用 php {dede:php} ... {/dede:php}

重要提示

  • 字段名:模板调用时一定要用英文字段名,而不是中文的“字段说明”。
  • 更新缓存:添加字段后,务必执行 [一键更新]
  • 权限:确保你的模板文件 (htm) 和目录有正确的读写权限。

遵循以上步骤,你就可以在 DedeCMS 中自如地添加和调用任何自定义字段了。

-- 展开阅读全文 --
头像
织梦会员发表文章数量多少算正常?
« 上一篇 03-07
哪里能下载到靠谱的C语言数据结构视频教程?
下一篇 » 03-07
取消
微信二维码
支付宝二维码