织梦自定义字段调用,模板读取自定义内容
织梦自定义字段调用是很多站长在二次开发时绕不开的一步:默认的标题、正文、缩略图不够用,就需要自己加字段,再让模板把它读出来。这篇教程面向零基础用户,从后台建字段到模板写代码完整走一遍,最后给出验证和排错方法,照着操作就能在模板中读到自定义内容。
## 先确认环境与字段类型
动手前先确认两件事:一是你的织梦后台能正常登录,二是清楚要加什么类型的字段。自定义字段本质是给内容模型增加一个存储列,字段类型决定了模板里怎么取值。
- 单行文本:适合作者、来源、副标题,模板里直接当字符串输出。
- 多行文本:适合简介、备注,输出时注意换行处理。
- 图片/附件:存的是文件路径或附件 ID,模板里通常要拼上域名或附件目录。
- 下拉/单选:存的是选项值,输出前最好确认后台配置的选项内容。
进入后台的路径是:`核心` → `内容模型管理`,找到你要修改的模型,比如“普通文章”,点右侧的“字段管理”,再点“添加字段”。这里填写字段名称、字段提示和数据类型,**字段名称建议用英文小写加下划线**,例如 `custom_author`,中文名只作为后台显示用。
## 在模板中读取自定义字段
字段建好后,模板里取值分两种情况,写法不一样,这是最容易出错的地方。
列表页和内容页的标签写法不同。列表页用 `{dede:arclist}` 或 `{dede:list}` 时,自定义字段要加在标签内并通过 `[field:字段名/]` 输出;内容页用 `{dede:field.字段名/}`。
先看列表页示例,假设字段名是 `custom_author`:
```
{dede:arclist typeid='1' row='10' addfields='custom_author'}
[field:title/]
作者:[field:custom_author/]
{/dede:arclist}
```
关键点是 `addfields='custom_author'`,**不加这个参数,模板里取不到自定义字段**,这是新手最常见的坑。
内容页模板(比如 `article_article.htm`)里直接写:
```
```
保存模板文件后,回到后台 `系统` → `系统基本参数` 或直接清缓存,让模板改动生效。
## 容易踩的坑和排查思路
字段调用不出来的原因通常集中在几处,按下面顺序排查效率最高。
- 模板里输出空白:先检查 `addfields` 参数有没有写、字段名有没有拼错,字段名区分大小写。
- 后台看不到字段:确认字段是否添加到了正确的模型,以及该栏目用的模型是否一致。
- 图片字段显示破图:检查路径是否需要补域名,附件目录权限是否正常。
- 修改模板无效:清空 `data/tplcache` 下的编译缓存,或在后台执行“更新缓存”。
- 列表页标签不生效:部分旧模板需要同时更新系统缓存和栏目缓存。
如果字段值是 HTML 内容,输出时要注意织梦默认的转义行为,必要时在后台字段设置里调整,避免标签被当作文本显示。
## 验证调用是否成功
改完模板后,用三步确认结果。第一步,打开对应栏目列表页,查看自定义字段是否出现在每条内容旁边;第二步,进入一篇具体文章的内容页,确认 `{dede:field.字段名/}` 输出正常;第三步,如果字段是图片,右键查看图片地址是否能直接打开。
验证时建议先改一个模板文件、只加一个字段,确认无误后再批量套用,**一次改太多字段会让排错变得困难**。
## 常见疑问
自定义字段能在搜索结果页调用吗?
可以,但搜索模板里同样要加 `addfields` 参数,写法与列表页一致,字段名不能漏。
字段名用中文可以吗?
后台显示名可以用中文,但字段名称建议用英文,中文名在模板调用和数据库层面容易出问题。
为什么内容页能显示、列表页不显示?
大概率是列表页标签缺少 `addfields` 参数,补上对应字段名即可。
模板改动后多久生效?
保存文件并清缓存后立即生效,若未生效优先检查是否改错了模板文件或缓存未清干净。
掌握织梦自定义字段调用后,模板读取自定义内容就不再依赖插件,日常做专题页、作者信息展示或产品参数表都能直接落地。建议先在测试栏目验证,再应用到正式模板。
作者:{dede:field.custom_author/}
``` 如果字段是图片类型,存的是路径,输出时一般要补上站点根目录: ```