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

-
登录后台:使用管理员账号登录你的 DedeCMS 后台。
-
进入字段管理:
- 路径通常是:
[核心]->模型管理]->模型管理]。 - 点击你想要修改的模型后面的 [管理字段] 按钮,如果你想在文章里添加一个字段,就点击文章模型(默认名为 "文章")后面的 [管理字段]。
- 路径通常是:
-
添加新字段:
- 在字段管理页面,点击右上角的 [增加新字段] 按钮。
- 在弹出的页面中,填写以下关键信息:
- 字段名:这是数据库中的字段名,只能使用英文字母、数字和下划线,且必须以字母开头。
author_intro(作者简介)、video_url(视频链接)、source_url(来源网址)。这是最重要的,模板调用时要用到它。 - 字段类型:根据你的需求选择,常用的有:
text:单行文本,适用于简短的文字,如作者、来源等。textarea:多行文本,适用于较长的文字,如摘要、简介等。editor:编辑器,等同于文章内容,可以插入图片、格式等,非常强大。varchar:同单行文本。datetime:日期时间,适用于发布时间、活动时间等。img:图片,可以上传一张图片。images:多图,可以上传多张图片,并以幻灯片等形式展示。media:多媒体,可以上传视频、音频、Flash等。
- 字段说明:在后台发布内容时显示的字段名称,可以用中文。“作者简介”、“视频地址”。
- 后台栏目支持:勾选这个,可以在后台发布/编辑文章时看到并填写这个字段。
- 摘要:如果勾选,这个字段的内容可以在列表的摘要位置调用。
- 是否为必填项:根据需要勾选。
- 字段名:这是数据库中的字段名,只能使用英文字母、数字和下划线,且必须以字母开头。
- 填写完毕后,点击 [保存] 按钮。
-
更新缓存:添加完字段后,系统会提示你更新数据表,请务必点击 [一键更新] 按钮,或者到
[系统]->[SQL命令行工具]中执行dede_archives表的结构更新,这一步至关重要,否则字段不会被真正添加到数据库中。
(图片来源网络,侵删)
第二步:在模板文件中调用字段
这是实现最终显示效果的关键,DedeCMS 提供了多种标签来调用字段,最常用的是 这是最简单直接的情况,详情页的模板可以直接通过 示例:
假设你添加了一个字段名为 在 在列表页和首页,情况稍微复杂一些,因为它们需要循环调用多篇文章,你需要使用 方法 1:直接在循环标签内使用 这是最简单的方法,但前提是你在添加字段时,勾选了 摘要” 选项。 示例:
假设你有一个字段 在 方法 2:使用 如果你没有勾选“前台内容摘要”,或者需要更复杂的逻辑,推荐使用 示例:
继续使用 在 代码解析: 方法 3:使用 如果你熟悉 PHP, 这种方法直接执行 SQL 查询,性能上可能不如 重要提示: 遵循以上步骤,你就可以在 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_url 是 media 类型,{dede:field name='video_url'/} 会自动解析成 <video> 或 <embed>
textarea 或 text 类型,它会直接输出文本内容。在列表页 (
list_*.htm) 和首页 (index.htm) 调用{dede:list} 或 {dede:arclist}
field
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}
array 或 php 标签(推荐,更灵活)array 标签,这是最常用和最可靠的方法。source_url 字段。list_*.htm 或 index.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 片段;否则输出空。{dede: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}
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) 和目录有正确的读写权限。
