织梦DedeCMS自定义模型字段联动选择
织梦DedeCMS自定义模型字段联动选择,本质是让两个下拉字段产生依赖关系,例如选择省份后自动出现对应城市。
很多站长在后台找不到联动选项,是因为联动功能并非字段类型自带,而是通过“联动类别”配合“联动字段”实现的。
下面按零基础可操作的方式,从准备到验证完整走一遍。
先确认版本和后台入口
织梦DedeCMS不同版本的后台菜单名称略有差异,以下路径以常见后台结构为准,实际操作时以你后台左侧菜单显示为准。
- 登录后台,确认顶部版本信息,常见为
DedeCMS V5.7系列。 - 进入
核心→频道模型→内容模型管理,这里能看到系统默认模型和已建自定义模型。 - 进入
系统→联动类别管理,这是配置联动选择的核心入口,早期版本可能叫联动类别。
如果找不到联动类别管理,说明当前版本未开放该模块,需要先确认程序文件是否完整,或考虑升级到支持联动字段的版本。
第一步:建立联动类别和联动数据
联动选择依赖“类别 + 子项”的数据结构,先建数据,再建字段。
- 点击
联动类别管理→增加联动类别。 - 类别名称填容易识别的名字,例如
省份城市,排序按需填写。 - 保存后,在类别列表点击
管理子项或增加子项。 - 先增加一级选项,例如
广东省;再在该选项下增加二级选项,例如广州市、深圳市。 - 重复操作,把所有需要联动的层级数据录完。
联动类别支持多级,但字段调用时通常只用到两级。数据层级越深,前台模板调用越复杂,建议控制在两级以内。
第二步:在自定义模型中添加联动字段
回到内容模型管理,找到目标自定义模型,点击字段管理。
- 点击
增加字段,字段名称填英文标识,例如province_city,字段标题填中文,例如所在城市。 - 字段类型选择
联动类型或联动菜单,不同版本命名略有差异,以实际下拉列表为准。 - 在联动类别选项中,选择刚才创建的
省份城市。 - 是否必填按业务决定,前台模板调用时该字段会返回所选子项的ID或名称,具体以字段配置中的返回格式为准。
- 保存字段后,回到模型管理页,点击
更新缓存或更新模型缓存。
关键检查点: 字段保存后,在字段管理列表中能看到该字段,且类型显示为联动类型,说明字段创建成功。
第三步:模板中调用联动字段
联动字段在前台模板中的调用方式和普通字段不同,
不能直接用{dede:输出完整联动路径,
field name='province_city'/}
需要根据存储值做二次查询或使用系统提供的联动标签。
常见做法是在内容页模板中这样写:
{dede:field.province_city runphp='yes'}
$dsql = new DedeSql(false);
$id = @me;
$dsql->SetQuery("SELECT name FROM #@__stepselect WHERE id='$id'");
$dsql->Execute();
$row = $dsql->GetArray();
@me = $row['name'];
{/dede:field.province_city}
如果只需要输出所选值,且后台字段配置中已设置返回名称,也可以直接在模板中输出。修改模板前先备份原文件,避免改错后无法恢复。
容易踩坑的几个地方
- 联动类别数据没录完就建字段,前台下拉框是空的。先补数据,再更新缓存。
- 字段建好后没有更新模型缓存,前台可能不显示该字段。每次改字段或改联动数据,都执行一次
更新缓存。 - 模板中直接输出联动字段ID,而不是名称,导致前台显示数字。需要按上一步做查询转换,或确认字段配置中的输出格式。
- 自定义模型字段和系统字段重名,可能造成调用冲突。字段英文名尽量加前缀,例如
m_province_city。 - 多级联动在部分老版本中前台模板支持不完整,如果二级数据无法显示,先检查联动子项的父级ID是否正确。
验证联动选择是否生效
配置完成后,不要只看后台,要到前台实际验证。
- 进入该自定义模型的内容发布页,查看联动字段是否出现下拉框。
- 选择一级选项,观察二级下拉是否自动更新。
- 发布一条测试内容,打开前台内容页,确认显示的联动值是否正确。
- 如果前台显示空白或ID,回到模板和字段配置排查,优先检查联动类别ID是否对应。
织梦DedeCMS自定义模型字段联动选择并不复杂,核心就是“先建联动类别数据,再建联动字段,最后在模板中做值转换”。
按这个顺序执行,大多数零基础用户也能在半小时内完成配置。
如果遇到前台不显示的情况,优先检查缓存和模板调用方式,再确认联动子项的层级关系是否正确。