联动类别是织梦一个非常强大且实用的功能,它类似于网站的省市区三级联动、商品分类、品牌列表等,它的核心思想是建立一个有层级关系的数据字典,然后在网站的任何地方(包括前后台)都可以方便地调用和展示。

联动类别是什么?有什么用?
联动类别就是一个可以无限分级(通常最多支持三级)的选项列表。
- 地区联动: 中国 -> 广东省 -> 广州市
- 行业联动: IT互联网 -> 前端开发 -> JavaScript
- 汽车品牌: 宝马 -> 3系 -> 320i
主要用途:
- 内容模型字段: 作为自定义字段,让用户在发布信息时可以选择,发布房产信息时,联动选择“省份-城市-区县”。
- 网站导航: 制作带有下拉菜单的分类导航,如“产品中心”下有“产品A”、“产品B”等。
- 表单调用: 在自定义表单中使用,收集用户的选择信息。
- 展示: 在前台模板中调用联动类别,生成列表或筛选功能。
联动类别的使用流程(分步详解)
使用联动类别主要分为三大步:
- 后台创建: 在织梦后台创建并配置联动类别。
- 关联字段: 将创建好的联动类别关联到内容模型的自定义字段上。
- 前台调用: 在前台模板中调用并展示联动类别数据。
第一步:在后台创建联动类别
-
登录织梦后台,进入「核心」 -> 「联动类别管理」。
(图片来源网络,侵删) -
添加顶级类别(大分类):
- 点击左上角的「[增加顶级类别]」按钮。
- 类别名称: 填写你想要的分类名称,如“地区”、“行业”等。
- 类别目录: 系统会自动生成,也可以自定义,主要用于调用时的识别。
- 是否开启: 选择“是”。
- 是否开启选择: 选择“是”,表示在前台可以选择。
- 设置项: 这里是关键!
- 父级: 默认为“无”,因为这是顶级类别。
- 类别名称: 这里填写的是第一级的选项名称,北京,上海,广东,江苏”。注意: 选项之间用英文逗号 分隔。
- 是否允许发布: 根据需要选择。
- 点击「提交」。
-
添加子类别(二级、三级):
- 在左侧的类别列表中,找到你刚刚创建的顶级类别(如“地区”),点击它前面的「+」号展开。
- 点击「[增加子类别]」按钮。
- 类别名称: 填写二级分类的名称,如“省份”。
- 类别目录: 填写
省份。 - 是否开启/选择: 同样选择“是”。
- 设置项:
- 父级: 这里会自动关联到顶级类别“地区”。
- 类别名称: 这里填写的是第二级的选项,但需要用
顶级选项:本级选项的格式,顶级是“广东”,那么这里就填写广东:广州,广东:深圳,广东:珠海,如果顶级是“江苏”,就填写江苏:南京,江苏:苏州。
- 点击「提交」。
-
添加三级类别:
- 操作同上,选择一个二级类别(如“广东”),点击「[增加子类别]」。
- 类别名称: 填写“城市”。
- 设置项:
- 父级: 自动关联到“广东”。
- 类别名称: 格式为
二级选项:本级选项。广州:天河区,广州:越秀区,深圳:南山区,深圳:福田区。
至此,一个“地区”联动类别就创建完成了。 你可以按照同样的方法创建“行业”、“品牌”等其他联动类别。

第二步:将联动类别关联到内容模型
联动类别创建好后,需要让它“活”起来,通常是通过内容模型的字段来实现。
-
进入模型管理: 「核心」 -> 模型管理」。
-
选择并修改模型:
- 找到你想要添加联动字段的内容模型,文章模型”、“产品模型”等,点击其后面的「修改」按钮。
- 如果是给新的分类使用,你也可以点击「增加新模型」。
-
添加联动字段:
- 在模型字段管理页面,点击「[增加新字段]」按钮。
- 字段名称: 填写英文字母,如
diqu(地区),这个名称在模板调用时需要用到。 - 字段说明: 填写中文说明,如“所在地区”。
- 字段类型: 选择“联动类型”。
- 所属联动类别: 从下拉列表中选择你刚才创建的“地区”联动类别。
- 是否显示: 选择“是”。
- 其他选项: 根据需要设置,是否必填”、“前台提交表单是否显示”等。
- 点击「保存」。
-
更新栏目缓存:
- 添加完字段后,返回模型管理列表,点击右上角的「更新系统缓存」按钮,确保新字段生效。
去对应模型的后台发布页面,你就会发现多了一个“所在地区”的联动选择框,发布内容时就可以像选择省市区一样进行选择了。
第三步:在前台模板中调用联动类别
联动类别数据可以在前台以多种形式展示。
调用当前内容的联动值
这是最常见的情况,在文章详情页、产品详情页等模板中,显示该内容选择的联动值。
模板代码:
假设你的字段名是 diqu,那么在内容页模板(如 article_article.htm)中使用:
{dede:field name='diqu'/}
显示效果:
这会直接显示存储在数据库中的ID值,如 1,5,12,这显然不是我们想要的。
要显示名称,需要使用 GetInfos 函数进行转换:
{dede:field name='diqu' function='GetInfos(@me, "联动类别目录", " ")'/}
@me:表示当前字段的值(即ID字符串)。联动类别目录:指你在创建联动类别时填写的“类别目录”,地区”。- 表示各级名称之间的连接符,这里是空格,你也可以改成 或
>。
示例:
diqu 字段的值是 1,5,12,对应“中国-广东省-广州市”,那么调用后会显示:中国 广东省 广州市。
调用联动类别生成下拉菜单
你可以制作一个联动筛选表单,让用户选择后进行筛选。
模板代码:
在列表页模板(如 list_article.htm)中:
<form name="formsearch" action="{dede:global name='cfg_phpurl'/}/search.php">
<input type="hidden" name="kwtype" value="0" />
<input type="hidden" name="searchtype" value="keyword" />
<!-- 调用顶级类别 -->
<select name="typeid" id="typeid" onchange="changeType(this)">
<option value='0'>请选择省份</option>
{dede:channelartlist typeid='0' cacheid='channelson'}
<option value='{dede:field name='id'/}'>{dede:field name='typename'/}</option>
{/dede:channelartlist}
</select>
<!-- 调用二级类别(通过JS动态加载) -->
<select name="typeid2" id="typeid2">
<option value='0'>请选择城市</option>
</select>
<!-- 调用三级类别(通过JS动态加载) -->
<select name="typeid3" id="typeid3">
<option value='0'>请选择区县</option>
</select>
<button type="submit">搜索</button>
</form>
<script language="javascript" type="text/javascript">
//联动菜单
function changeType(sel)
{
var taget_obj = document.getElementById('typeid2');
var taget_obj2 = document.getElementById('typeid3');
taget_obj.length = 1;
taget_obj.options[0] = new Option('请选择城市',0);
taget_obj2.length = 1;
taget_obj2.options[0] = new Option('请选择区县',0);
//这里假设你的二级分类ID是固定的,你需要根据实际情况修改
//更通用的做法是使用AJAX从后台获取数据
//下面是一个简化的示例,实际项目中需要配合AJAX
if(sel.value == '5'){ // 假设5是广东的ID
taget_obj.options[1] = new Option('广州',10);
taget_obj.options[2] = new Option('深圳',11);
}
}
</script>
注意: 上面是一个简化版的JS联动,在实际项目中,更推荐使用织梦自带的AJAX联动机制或结合jQuery来实现更流畅的无刷新联动效果,这需要你对织梦的标签和JS有一定了解。
直接调用联动类别生成列表
如果你想直接在页面上展示所有的联动选项,热门地区”列表。
模板代码:
使用 显示效果:
希望这份详细的教程能帮助你完全掌握织梦CMS联动类别的使用!{dede:global name='listlink'/}
<h3>热门地区</h3>
<ul>
{dede:global name='listlink' function='GetInfos(@me, "地区", " | ")'/}
</ul>
listlink:这是一个固定的全局变量,用于获取顶级联动类别。GetInfos 函数:同上,用于将ID转换为名称。北京 | 上海 | 广东 | 江苏
总结与常见问题
GetInfos 函数,否则只会显示ID。
function='GetInfos()' 进行转换,直接 {dede:field name='your_field'/} 只会输出ID。
ajax.php 发送请求,获取子级数据并动态填充到下拉框中。
