联动类别是 DedeCMS 中一个非常实用的功能,它允许你创建一组相互关联的下拉菜单,省-市-县”三级联动,要控制它的显示样式,主要有两种方法:

- 修改核心函数文件(全局生效,最常用)
- 使用模板标签的
style属性(针对特定位置,最灵活)
修改核心函数文件(全局控制)
这是最标准、最常用的方法,通过修改 select 标签的 class 属性,你就可以用 CSS 来统一控制所有联动类别的样式。
步骤 1:定位核心文件
联动类别在后台模板中是通过 {dede:channeltype} 这个标签来调用的,其核心的 HTML 代码生成逻辑位于系统核心文件中。
你需要编辑的文件是:
/include/typelink.class.php
步骤 2:修改代码
打开 typelink.class.php 文件,找到生成 <select> 标签的代码,通常在 GetOptionList() 或类似的方法中。

你会找到类似这样的代码行:
// 原始代码,大约在 280 行左右,具体版本可能略有不同 $s .= "<select name='$fieldname' id='$fieldname'>\r\n";
我们需要在这行代码中为 <select> 标签添加一个 class 属性,我们给它添加一个类名 联动类别样式。
修改后:
// 修改后的代码 $s .= "<select name='$fieldname' id='$fieldname' class='联动类别样式'>\r\n";
代码解释:

name='$fieldname':表单提交时的名称。id='$fieldname':元素的唯一 ID,方便 JavaScript 操作。class='联动类别样式':这是我们添加的,它为这个下拉菜单定义了一个 CSS 类,名为“联动类别样式”。
步骤 3:添加 CSS 样式
你可以在你的 CSS 文件(/templets/你的模板/style/ 目录下的 css 文件,或者直接在模板的 <head> 标签内)中为这个类名定义样式。
示例 CSS:
/* 为所有联动类别添加统一的样式 */
.联动类别样式 {
width: 200px; /* 设置宽度 */
padding: 8px; /* 内边距 */
font-size: 14px; /* 字体大小 */
border: 1px solid #ccc; /* 边框 */
border-radius: 4px; /* 圆角 */
background-color: #fff; /* 背景色 */
margin-right: 10px; /* 与下一个元素间距 */
}
/* 可选:当鼠标悬停或获得焦点时的样式 */
.联动类别样式:hover,
.联动类别样式:focus {
border-color: #66afe9;
outline: none;
box-shadow: 0 0 8px rgba(102, 175, 233, 0.6);
}
优点:
- 全局统一:一次修改,所有使用
{dede:channeltype}的地方都会应用此样式。 - 维护方便:样式集中管理,易于修改。
缺点:
- 侵入性强:修改了核心文件,升级 DedeCMS 时可能会被覆盖,需要重新修改。
使用模板标签的 style 属性(局部控制)
如果你只想在页面的某个特定位置为联动类别设置独特的样式,而不影响其他地方,可以使用这种方法。
步骤 1:在模板标签中添加属性
在你调用联动类别的模板文件中( 原始调用方式: 修改后,添加 方式 A:添加自定义 Class(推荐) 你在 CSS 文件中定义 方式 B:直接内联样式(不推荐,用于快速测试) 这种方式会将样式直接写在 HTML 标签里,不利于维护,仅适用于临时调试。 与方法一类似,在你的 CSS 文件中为你刚刚添加的 优点: 缺点: 假设我们要在文章发布页面实现一个“省-市-县”三级联动,并给它们加上统一的现代化样式。 编辑 在你的模板 CSS 文件( 在你的模板文件(如 最终效果就是三个整齐、美观且具有交互效果的下拉框。 对于大多数情况,推荐使用方法一(修改核心文件),因为它能确保整个网站的联动类别风格一致,如果只是少数页面需要特殊样式,再结合使用方法二。article_add.htm 或 list_栏目ID.htm),找到 {dede:channeltype}
{dede:channeltype typeid='0' name='typeid'/}
class 或直接内联 style:{dede:channeltype typeid='0' name='typeid' class='我的自定义样式类名'/}
.我的自定义样式类名 即可。{dede:channeltype typeid='0' name='typeid' style='width: 150px; border: 2px solid red;'/}
步骤 2:在 CSS 文件中定义样式
class 定义样式。/* 仅应用于特定位置的联动类别 */
.我的自定义样式类名 {
width: 150px;
border: 2px solid #ff6a00;
background-color: #fffbe6;
}
class 属性。
完整示例:实现一个美观的联动类别
修改核心文件(全局样式)
/include/typelink.class.php,在 GetOptionList 方法中找到 <select> 标签,添加 class。// 在 typelink.class.php 中
$s .= "<select name='$fieldname' id='$fieldname' class='联动-select'>\r\n";
添加 CSS 样式
/templets/default/style/dedecms.css)中添加以下样式:/* 联动类别容器,用于布局 */
.form-group {
margin-bottom: 15px;
display: flex;
align-items: center;
}
.form-group label {
margin-right: 10px;
font-weight: bold;
min-width: 60px;
}
/* 联动下拉框的样式 */
.联动-select {
width: 150px;
height: 36px;
line-height: 36px;
padding: 0 10px;
font-size: 14px;
color: #333;
background-color: #fff;
background-image: none;
border: 1px solid #ccc;
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
-webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
-o-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
}
.联动-select:focus {
border-color: #66afe9;
outline: 0;
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);
box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);
}
/* 为联动组添加间距,让它们不挤在一起 */
.联动-select + .联动-select {
margin-left: 10px;
}
在模板文件中调用
article_add.htm)中,这样调用联动类别:<div class="form-group">
<label>文章栏目:</label>
{dede:channeltype typeid='0' name='typeid'}
</div>
方法
适用场景
优点
缺点
修改核心文件
需要整个网站联动类别样式统一
统一、规范、维护方便
修改核心文件,升级可能被覆盖
模板标签属性
仅需对特定位置的联动类别进行样式定制
灵活、不侵入核心、升级无忧
需要为每个特殊样式单独添加属性,不够“一劳永逸”
