- 后台添加自定义字段:在数据库中为你的内容模型(文章模型”)增加一个新的字段。
- 前台模板修改标签:在列表页模板文件中,修改
{dede:list}标签,使其能循环并输出这个新字段。
下面我将为你提供最详细、最标准的图文步骤说明。
第一步:在后台添加自定义字段
这是最关键的一步,假设我们要为一个“文章模型”添加一个名为 author_intro (作者简介) 的自定义字段。
进入模型管理
登录织梦CMS后台,找到并点击菜单栏的: 【核心】 -> 【内容模型管理】
模型管理](https://img-blog.csdnimg.cn/20250512152235744.png)
选择并修改对应的内容模型
模型管理页面,你会看到系统默认的模型,如“文章”、“图片”等,找到你需要修改的模型,文章模型”,然后点击其右侧的 【管理字段】 按钮。

添加新字段
进入字段管理页面后,点击右上角的 【添加新字段】 按钮。

填写字段信息
在弹出的表单中,填写新字段的各项信息:
- 字段名称:这是最重要的,必须使用英文字母、数字或下划线,
author_intro,这个名称将直接用于模板标签调用。 - 字段别名:这是在前台显示给用户看的名称,可以使用中文,作者简介”。
- 字段类型:根据你的需求选择,对于简介类的文本,选择 “单行文本” 或 “多行文本(文本区域)” 即可,如果是图片,就选“图片”,依此类推。
- 字段大小:对于文本类型,可以设置输入框的长度。
- 默认值:(可选)设置一个默认值。
- 是否为空:如果允许不填写,选择“是”。
- 字段提示:(可选)在后台发布内容时,会给用户显示的提示文字。
- 前台显示:务必勾选此项!如果不勾选,这个字段即使有数据也无法在前台模板中调用。

填写完毕后,点击 【保存】。
重要提示:添加新字段后,系统会提示你需要更新一下数据库结构,请务必按照提示,点击一个按钮来执行数据库更新操作,这一步会自动在
dede_archives(主表)或dede_addonarticle(附加表)中为你创建新的列。
发布测试内容
为了确保字段可用,去后台发布一篇新文章,你会发现在文章编辑界面出现了你刚刚添加的“作者简介”输入框,填入一些测试内容并发布。
第二步:在前台模板中调用新增字段
你的数据库和后台都已经准备好了,接下来就是修改模板文件来显示这些数据。
找到列表页模板文件
列表页的模板文件通常位于你的模板目录下,路径类似于:
/templets/default/list_article.htm
(请根据你实际使用的模板路径进行修改)
修改 {dede:list}
织梦的列表标签有两种形式:{dede:list} 和 {dede:arclist}。在列表页(list_xxx.htm)中,必须使用 {dede:list}。
默认的{dede:list}标签可能只循环调用主表(dede_archives)的字段,如 title、pubdate、click 等,而我们新增的字段 author_intro 通常存放在附加表(如 dede_addonarticle)中。
为了调用附加表中的字段,你需要给 {dede:list} 标签添加一个属性:addfields。
语法格式:
{dede:list addfields='新增字段1,新增字段2' pagesize='10'}
<!-- 循环体内的内容 -->
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<p>作者简介:[field:author_intro/]</p> <!-- 这里就是调用我们新增的字段 -->
<span>发布时间:[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:list}
参数解释:
addfields='...':核心参数,用英文逗号 隔开所有需要从附加表中调用的自定义字段名称。addfields='author_intro,another_field'。
pagesize='10':每页显示的文章数量,这是常规用法。
完整示例
假设你的 list_article.htm 文件内容如下:
{dede:list addfields='author_intro' pagesize='10'}
<li>
<!-- [field:title/] 是默认就有的,调用文章标题 -->
<h3><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></h3>
<!-- [field:author_intro/] 就是我们新增的字段 -->
<div class="intro">
<strong>作者简介:</strong>[field:author_intro/]
</div>
<div class="info">
<span>发布时间:[field:pubdate function="MyDate('Y-m-d',@me)"]</span>
<span>浏览次数:[field:click/]</span>
</div>
</li>
{/dede:list}
<!-- 分页标签 -->
<div class="page">{dede:pagelist listitem="info,index,end,pre,next,pageno" listsize="5"/}</div>
保存并刷新页面
将修改后的模板文件保存,然后去你的网站前台列表页刷新,你应该就能看到每篇文章下方都出现了“作者简介:”以及你之前填写的测试内容了。
常见问题与注意事项
-
数据调不出来怎么办?
- 检查
addfields:确保 addfields 里的字段名和你在后台添加的“字段名称”完全一致,区分大小写。
- 检查前台显示:回到后台 【核心】-> 【内容模型管理】-> 【管理字段】,确认该字段的“前台显示”选项是已勾选状态。
- 检查数据:去后台确认对应的文章是否真的填写了这个字段的内容。
- 检查缓存:有时候浏览器缓存会导致看不到效果,尝试
Ctrl + F5 强制刷新页面,或者清除浏览器缓存。
- 检查数据库:如果以上都正确,可以去数据库里直接查询
dede_addonarticle 表,看看数据是否成功插入。
-
{dede:list} 和 {dede:arclist} 的区别?
{dede:list}:用于列表页(list_xxx.htm),它通过 SQL 查询直接从数据库分页获取数据,性能较好,但灵活性相对较低,调用附加表字段必须使用 addfields。
{dede:arclist}:用于首页、频道页、文章页等任何地方,它通过缓存机制获取数据,功能非常强大,可以使用各种底层模板(如 like、in 等),但性能略低于 {dede:list},调用附加表字段使用 channelid 和 addfields 两个参数配合。
-
字段类型不同,调用方式有区别吗?
- 文本、数字:直接使用
[field:字段名/] 即可。
- 多行文本:直接使用
[field:字段名/],它会保留换行符,如果想在HTML中正确显示换行,可以加上 nl2br 函数:[field:字段名 function='nl2br(@me)'/]。
- 编辑器(内容):直接使用
[field:字段名/]。
- 图片:直接使用
[field:字段名/] 输出的是图片地址,如果需要输出完整的 <img> 标签,需要用PHP代码处理,通常不直接在列表页这样做。
- 下拉、单选:直接使用
[field:字段名/] 输出的是你设置的值。
- 多选:输出的值是逗号分隔的字符串,你可能需要用PHP的
explode 函数来分割处理。
通过以上步骤,你就可以轻松地在织梦CMS的列表页中调用任何你新增的自定义字段了。
织梦的列表标签有两种形式:{dede:list} 和 {dede:arclist}。在列表页(list_xxx.htm)中,必须使用 {dede:list}。
默认的{dede:list}标签可能只循环调用主表(dede_archives)的字段,如 title、pubdate、click 等,而我们新增的字段 author_intro 通常存放在附加表(如 dede_addonarticle)中。
为了调用附加表中的字段,你需要给 {dede:list} 标签添加一个属性:addfields。
语法格式:
{dede:list addfields='新增字段1,新增字段2' pagesize='10'}
<!-- 循环体内的内容 -->
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<p>作者简介:[field:author_intro/]</p> <!-- 这里就是调用我们新增的字段 -->
<span>发布时间:[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:list}
参数解释:
addfields='...':核心参数,用英文逗号 隔开所有需要从附加表中调用的自定义字段名称。addfields='author_intro,another_field'。pagesize='10':每页显示的文章数量,这是常规用法。
完整示例
假设你的 list_article.htm 文件内容如下:
{dede:list addfields='author_intro' pagesize='10'}
<li>
<!-- [field:title/] 是默认就有的,调用文章标题 -->
<h3><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></h3>
<!-- [field:author_intro/] 就是我们新增的字段 -->
<div class="intro">
<strong>作者简介:</strong>[field:author_intro/]
</div>
<div class="info">
<span>发布时间:[field:pubdate function="MyDate('Y-m-d',@me)"]</span>
<span>浏览次数:[field:click/]</span>
</div>
</li>
{/dede:list}
<!-- 分页标签 -->
<div class="page">{dede:pagelist listitem="info,index,end,pre,next,pageno" listsize="5"/}</div>
保存并刷新页面
将修改后的模板文件保存,然后去你的网站前台列表页刷新,你应该就能看到每篇文章下方都出现了“作者简介:”以及你之前填写的测试内容了。
常见问题与注意事项
-
数据调不出来怎么办?
- 检查
addfields:确保addfields里的字段名和你在后台添加的“字段名称”完全一致,区分大小写。 - 检查前台显示:回到后台 【核心】-> 【内容模型管理】-> 【管理字段】,确认该字段的“前台显示”选项是已勾选状态。
- 检查数据:去后台确认对应的文章是否真的填写了这个字段的内容。
- 检查缓存:有时候浏览器缓存会导致看不到效果,尝试
Ctrl + F5强制刷新页面,或者清除浏览器缓存。 - 检查数据库:如果以上都正确,可以去数据库里直接查询
dede_addonarticle表,看看数据是否成功插入。
- 检查
-
{dede:list}和{dede:arclist}的区别?{dede:list}:用于列表页(list_xxx.htm),它通过 SQL 查询直接从数据库分页获取数据,性能较好,但灵活性相对较低,调用附加表字段必须使用addfields。{dede:arclist}:用于首页、频道页、文章页等任何地方,它通过缓存机制获取数据,功能非常强大,可以使用各种底层模板(如like、in等),但性能略低于{dede:list},调用附加表字段使用channelid和addfields两个参数配合。
-
字段类型不同,调用方式有区别吗?
- 文本、数字:直接使用
[field:字段名/]即可。 - 多行文本:直接使用
[field:字段名/],它会保留换行符,如果想在HTML中正确显示换行,可以加上nl2br函数:[field:字段名 function='nl2br(@me)'/]。 - 编辑器(内容):直接使用
[field:字段名/]。 - 图片:直接使用
[field:字段名/]输出的是图片地址,如果需要输出完整的<img>标签,需要用PHP代码处理,通常不直接在列表页这样做。 - 下拉、单选:直接使用
[field:字段名/]输出的是你设置的值。 - 多选:输出的值是逗号分隔的字符串,你可能需要用PHP的
explode函数来分割处理。
- 文本、数字:直接使用
通过以上步骤,你就可以轻松地在织梦CMS的列表页中调用任何你新增的自定义字段了。
