第一步:修改数据库结构 (为 dede_arctype 表添加缩略图字段)
这是最关键的一步,我们需要在栏目表 dede_arctype 中增加一个字段来存储缩略图的路径。

-
登录你的网站数据库管理工具,phpMyAdmin。
-
选择你的 dedecms 数据库。
-
点击
dede_arctype表,选择“结构”或“SQL”选项卡。 -
使用SQL语句 (推荐)
(图片来源网络,侵删)-
在SQL输入框中执行以下语句:
ALTER TABLE `dede_arctype` ADD `typeimg` CHAR(255) NOT NULL DEFAULT '';
ALTER TABLE ... ADD ...是添加字段的标准SQL语法。dede_arctype是表名,如果你的表前缀不是dede_,请修改成你的表前缀。typeimg是我们为缩略图字段起的名字。CHAR(255)是数据类型,用于存储图片路径。NOT NULL DEFAULT ''表示该字段不能为空,默认值为空字符串。
-
点击“执行”按钮。
-
-
使用phpMyAdmin图形界面
- 在
dede_arctype表的结构页面,点击“添加”字段按钮。 - 在“字段名”输入框中填写
typeimg。 - 在“类型”下拉框中选择
varchar。 - 在“长度/值”中填写
255。 - 其他选项保持默认。
- 点击“执行”或“保存”完成。
- 在
执行成功后,你的 dede_arctype 表就多了一个名为 typeimg 的字段,用于存放栏目缩略图路径。

第二步:修改后台栏目管理文件 (添加上传和保存功能)
我们需要修改后台添加/编辑栏目的模板文件,让界面多出一个上传缩略图的输入框。
-
找到并打开文件:
dede/templets/catalog_add.htm(添加栏目模板)dede/templets/catalog_edit.htm(编辑栏目模板)这两个文件都需要修改,操作方法完全一样。
-
在合适的位置添加代码: 打开
catalog_add.htm文件,找到类似<tr>的表格行,在“栏目名称”、“栏目目录”等字段后面添加一个新行。找到这段代码(或类似结构):
<tr> <td height="26" style="padding-left:10px;">栏目名称:</td> <td> <input name="typename" type="text" id="typename" value="<?php echo $myrow['typename']?>" class="iptxt" style="width:250px" /> <font color='red'>*</font> </td> </tr>在它后面,添加以下代码:
<tr> <td height="26" style="padding-left:10px;">缩略图:</td> <td> <input name="typeimg" type="text" id="typeimg" value="<?php echo $myrow['typeimg']?>" class="iptxt" style="width:250px" /> <input type="button" name="set1" value="上传图片" style="width:70px;cursor:pointer;" onclick="ShowImg('form1.typeimg','bigimg')"/> <input type="button" name="use1" value="使用" style="width:40px;cursor:pointer;" onclick="document.form1.typeimg.value='<?php echo $myrow['typeimg']?>'"/> </td> </tr>name="typeimg":这个name属性必须与数据库中的字段名 完全一致,这样提交表单时数据才能正确保存。value="<?php echo $myrow['typeimg']?>":用于在编辑栏目时,显示已经上传的缩略图路径。onclick="ShowImg(...)":这是织梦自带的图片上传和选择弹窗函数,会调用/include/dialog/select_images.php这个文件。
-
对
catalog_edit.htm做完全相同的操作。
第三步:修改栏目保存处理文件 (让数据能入库)
当你在后台填写完信息并点击“确定”或“保存”时,需要有一个PHP文件来接收和处理这些数据,并存入数据库。
-
找到并打开文件:
dede/catalog_add.php(添加栏目处理文件)dede/catalog_edit.php(编辑栏目处理文件)同样,这两个文件都需要修改。
-
修改代码: 在这两个文件中,找到SQL插入或更新语句,确保将
typeimg字段包含进去。-
在
catalog_add.php中: 找到类似这样的代码:$query = "INSERT INTO `dede_arctype`( `reid`, `topid`, `sortrank`, `typename`, `typedir`, `isdefault`, `defaultname`, `issystem`, `ishidden`, `channeltype`, `corank`, `description`, `keywords`, `seotitle`, `moresite`, `siteurl`, `sitepath`, `modname`, `maxpage`, `isdefaultpage`, `description` ) VALUES ( '$reid', '$topid', '$sortrank', '$typename', '$typedir', '$isdefault', '$defaultname', '$issystem', '$ishidden', '$channeltype', '$corank', '$description', '$keywords', '$seotitle', '$moresite', '$siteurl', '$sitepath', '$modname', '$maxpage', '$isdefaultpage', '$description' );";
在
VALUES的括号里,最后添加$typeimg,在INSERT INTO的字段列表里也添加typeimg。修改后应该是这样:
// ... 前面的代码 ... $typeimg = isset($typeimg) ? stripslashes($typeimg) : ''; $query = "INSERT INTO `dede_arctype`( `reid`, `topid`, `sortrank`, `typename`, `typedir`, `isdefault`, `defaultname`, `issystem`, `ishidden`, `channeltype`, `corank`, `description`, `keywords`, `seotitle`, `moresite`, `siteurl`, `sitepath`, `modname`, `maxpage`, `isdefaultpage`, `description`, `typeimg` ) VALUES ( '$reid', '$topid', '$sortrank', '$typename', '$typedir', '$isdefault', '$defaultname', '$issystem', '$ishidden', '$channeltype', '$corank', '$description', '$keywords', '$seotitle', '$moresite', '$siteurl', '$sitepath', '$modname', '$maxpage', '$isdefaultpage', '$description', '$typeimg' );"; // ... 后面的代码 ...
-
在
catalog_edit.php中: 找到UPDATE语句,做类似的操作。// ... 前面的代码 ... $typeimg = isset($typeimg) ? stripslashes($typeimg) : ''; $query = "UPDATE `dede_arctype` SET `reid`='$reid', `topid`='$topid', `sortrank`='$sortrank', `typename`='$typename', `typedir`='$typedir', `isdefault`='$isdefault', `defaultname`='$defaultname', `issystem`='$issystem', `ishidden`='$ishidden', `channeltype`='$channeltype', `corank`='$corank', `description`='$description', `keywords`='$keywords', `seotitle`='$seotitle', `moresite`='$moresite', `siteurl`='$siteurl', `sitepath`='$sitepath', `modname`='$modname', `maxpage`='$maxpage', `isdefaultpage`='$isdefaultpage', `description`='$description', `typeimg`='$typeimg' WHERE id='$id'; "; // ... 后面的代码 ...
-
第四步:在前台模板中调用栏目缩略图
现在后台功能已经完成,最后一步是在你的网站前台模板文件中调用并显示这个缩略图。
-
找到你的栏目列表模板,通常是:
templets/default/list_channel.htm(频道封面页)templets/default/list_category.htm(栏目列表页) -
在需要显示缩略图的位置,加入以下代码:
{dede:field name='typeimg' /}- 这个标签会直接输出该栏目的缩略图路径,
/uploads/image/20251018/123456.jpg。
- 这个标签会直接输出该栏目的缩略图路径,
-
为了更好的效果,通常会把它嵌入
<img>标签中:<img src="{dede:field name='typeimg' /}" alt="{dede:field name='typename' function='html2text(@me)'/}" />src属性用来显示图片。alt属性用于图片描述,这里我们使用了{dede:field name='typename'}来获取栏目名称作为alt文本,并用function='html2text'过滤掉HTML标签,使其更规范。
第五步:更新缓存
完成所有修改后,登录DedeCMS后台。
- 点击顶部菜单的“系统” -> “清除缓存”。
- 选择“一键更新网站”,然后点击“开始更新”,这一步会重新生成所有页面,确保你的修改生效。
总结与注意事项
- 表前缀:如果你的数据库表前缀不是
dede_,请务必修改所有SQL语句中的表名。 - 文件权限:确保你修改的文件(
catalog_add.htm,catalog_edit.php等)有写入权限。 - 模板标签:
{dede:field name='typeimg' /}是调用核心字段,如果你使用了自定义模型,可能需要调整。 - 上传目录:上传的图片会保存在你网站后台设置的“附件目录”中,默认是
/uploads/。
按照以上五个步骤操作,你就可以成功地为织梦DedeCMS 5.7的栏目添加并使用缩略图功能了。
