要实现调用自定义字段,你需要修改模板文件,并根据你的DedeCMS版本(5.7还是更早的)选择合适的方法。强烈建议在修改前备份你的模板文件!

下面我将为你详细介绍两种最主流的方法:
使用 {dede:list} 标签的底层字段功能(推荐,适用于DedeCMS 5.7及以后版本)
这是最常用也是最推荐的方法,因为它安全、高效,且符合DedeCMS的设计规范。
核心思路:
{dede:list} 标签本身支持一个 function 属性,可以对字段进行二次处理,我们可以利用这个属性来调用自定义字段。
详细步骤:
第1步:确保后台已添加并填写自定义字段

- 登录DedeCMS后台。
- 进入【核心】 -> 【内容模型管理】,选择你文章所在的模型(普通文章”)。
- 点击【字段管理】,添加你的自定义字段,我们添加一个名为
zuozhe(作者)的文本字段。 - 发布或编辑文章时,确保在自定义字段
zuozhe中填写了内容。
第2步:修改列表页模板文件
-
找到你的列表页模板文件,通常位于
/templets/default/目录下,文件名可能是list_article.htm或你自定义的模板文件。 -
用代码编辑器(如VS Code, Sublime Text, Dreamweaver)打开这个文件。
-
找到
{dede:list}循环标签。
(图片来源网络,侵删) -
在循环内部,使用以下语法来调用你的自定义字段:
{dede:list} <li> <a href="[field:arcurl/]">[field:title/]</a> <span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span> <!-- 以下是调用自定义字段的方法 --> <p>作者:[field:zuozhe/]</p> </li> {/dede:list}
第3步:使用 function 属性进行格式化(非常重要)
如果你的自定义字段是特殊格式,比如多行文本(textarea)或者需要截取,就必须使用 function 属性。
示例1:调用文本/数字类型字段(如 zuozhe)
{dede:list}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<!-- 直接调用 -->
<p>作者:[field:zuozhe/]</p>
</li>
{/dede:list}
示例2:调用多行文本(textarea)字段(如 jianjie - 简介)
多行文本默认输出会带换行符,我们需要在模板里用 str_replace 函数处理掉。
{dede:list}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<!-- 调用多行文本字段,并替换掉换行符 -->
<p>简介:[field:jianjie function='str_replace("\r\n", "", @me)'/]</p>
</li>
{/dede:list}
示例3:调用并截取字段内容(如 neirong - 内容)
如果字段是文章内容,你只想在列表页显示前100个字符,可以使用 cn_substr 函数。
{dede:list}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<!-- 调用内容字段并截取前100个字符 -->
<p>[field:neirong function='cn_substr(@me, 100)'/]...</p>
</li>
{/dede:list}
示例4:调用并格式化时间字段(如 shijian - 时间)
如果你的自定义字段是一个时间戳格式的数字,你可以像系统自带的 pubdate 一样格式化它。
{dede:list}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<!-- 调用自定义时间字段并格式化为 Y-m-d -->
<p>活动时间:[field:shijian function="MyDate('Y-m-d', @me)"/]</p>
</li>
{/dede:list}
使用 {dedarclist} 标签(适用于所有版本,包括DedeCMS 5.6及更早版本)
如果你的 第1步:备份模板文件 同上,确保你已经备份了列表页模板。 第2步:在模板中替换或添加 将原来的 参数说明: 第3步:调用自定义字段 Q1: 为什么我调用自定义字段后,前台显示为空?
A1: 请按以下顺序排查: Q2: 为什么我的自定义字段内容里包含HTML标签,但前台显示的是源码而不是解析后的效果?
A2: 因为DedeCMS出于安全考虑,默认不对列表页调用的字段内容进行HTML解析,如果你需要解析,可以在 Q3: 对于绝大多数情况,方法一 是你的首选,如果遇到问题,再尝试 方法二,希望这个详细的教程能帮到你!{dede:list} 标签无法正常工作(例如某些修改过的版本),或者你使用的是旧版DedeCMS,可以使用 {dedarclist}
核心思路:
{dedarclist} 是一个更底层的列表标签,它通过 innertext 参数来定义列表项的模板,灵活性更高。详细步骤:
{dedarclist}{dede:list} ... {/dede:list} 部分替换为以下代码:{dede:arclist typeid='' row='10' titlelen='50' orderby='pubdate'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
<!-- 以下是调用自定义字段的方法 -->
<p>作者:[field:zuozhe/]</p>
</li>
{/dede:arclist}
typeid='':指定栏目ID,留空表示所有栏目。row='10':获取10条记录,len='50'`:标题长度。orderby='pubdate':按发布时间排序。{dede:arclist} 调用自定义字段的方法和 {dede:list} 的底层方法完全一样,直接使用 [field:自定义字段名/] 即可,同样支持 function 属性进行格式化。{dede:arclist typeid='' row='10'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<!-- 调用多行文本并处理换行 -->
<p>简介:[field:jianjie function='str_replace("\r\n", "", @me)'/]</p>
<!-- 调用内容并截取 -->
<p>[field:neirong function='cn_substr(@me, 100)'/]...</p>
</li>
{/dede:arclist}
常见问题与解决方案 (FAQ)
dede_archives 表和 dede_addonarticle(或其他对应附加表)表中,该字段的值是否已成功保存。function 中使用 htmlspecialchars_decode 函数。<!-- 假设字段名是 `content`,里面包含 <p> 标签 -->
<p>[field:content function='htmlspecialchars_decode(@me)'/]</p>
{dede:list} 和 {dede:arclist} 有什么区别?
A3:
{dede:list}:主要用于列表页,功能相对固定,底层字段调用更方便,性能较好。{dede:arclist}:功能更强大、更灵活,可以在任何地方(包括首页、封面页)调用任意栏目的文章列表,但语法稍显复杂。
方法
适用场景
优点
缺点
{dede:list} 底层字段DedeCMS 5.7+ 列表页
推荐,语法简洁,性能好
旧版不支持
{dede:arclist}所有版本,任意页面
灵活强大,功能全面
语法稍复杂,参数多
