DedeCMS 5.7 的后台模板采用了经典的 PHP 模板引擎(早期版本,类似 Smarty 但更简单)技术,它将 PHP 的逻辑代码(PHP 标签)与 HTML 的展示代码(模板变量)分离,使得开发者可以专注于页面布局和样式设计,而无需深入修改底层的 PHP 业务逻辑。

(图片来源网络,侵删)
后台模板的核心文件结构
当你进入 DedeCMS 后台时,看到的页面是由多个模板文件组合渲染而成的,这些模板文件主要存放在以下目录中:
/dede/ <-- 后台主目录
├── templets/ <-- **核心后台模板目录**
│ ├── index_body.htm <-- 后台首页主体内容
│ ├── index_menu.htm <-- 后台首页左侧菜单
│ ├── index_top.htm <-- 后台首页顶部框架
│ ├── index_frame.htm <-- 后台首页主框架文件
│ ├── login.htm <-- 登录页面
│ ├── ... <-- 其他功能模块的模板文件
│
├── images/ <-- 后台图片资源目录
├── js/ <-- 后台 JavaScript 文件目录
├── style/ <-- 后台 CSS 样式文件目录
│ └── screen.css <-- **核心样式文件**
└── ...
关键目录和文件说明:
/dedem/templets/: 这是后台模板的“灵魂”所在,几乎所有你能看到的页面结构、文字、表单元素都由这里的.htm文件定义。/dedem/style/screen.css: 这是后台的“皮肤”,页面的颜色、字体、间距、布局等所有样式都由这个 CSS 文件控制,修改这里是改变后台外观最直接的方式。/dedem/images/: 存放后台使用的各种图标、Logo、背景图等静态图片资源。/dedem/js/: 存放后台交互所需的 JavaScript 文件,如日期选择器、表单验证、动态菜单加载等。
核心模板文件解析
让我们来看看几个最重要的模板文件是如何构成一个后台页面的:
index_frame.htm - 主框架文件
这个文件本身内容很少,它定义了整个后台页面的基本框架结构,主要是使用了 HTML 的 <frameset> 标签(DedeCMS 5.7 框架比较老,还在使用框架技术)。

(图片来源网络,侵删)
<!-- index_frame.htm 的简化内容 -->
<frameset rows="59,*" frameborder="no" border="0" framespacing="0">
<frame src="index_top.php" name="topframe" scrolling="no" noresize="noresize" id="topframe" />
<frameset cols="200,*" frameborder="no" border="0" framespacing="0">
<frame src="index_menu.php" name="menuframe" scrolling="no" noresize="noresize" id="menuframe" />
<frame src="index_body.php" name="mainframe" scrolling="yes" noresize="noresize" id="mainframe" />
</frameset>
</frameset>
<noframes><body>您的浏览器不支持框架!</body></noframes>
- *`rows="59,"`**: 将页面分为上下两部分,上面高度为 59 像素,下面占据剩余所有空间。
topframe: 加载index_top.php,显示后台的顶部标题栏。- *`cols="200,"`**: 将下面的部分再分为左右两部分,左边宽度为 200 像素,右边占据剩余空间。
menuframe: 加载index_menu.php,显示左侧的菜单栏。mainframe: 加载index_body.php,显示右侧的主要内容区域。
注意:虽然文件后缀是 .htm,但它们实际上会被 PHP 引擎解析。index_top.php 会读取 templets/index_top.htm 模板文件,并将其中的变量替换成实际内容后输出给浏览器。
index_top.htm - 顶部模板
这个文件定义了后台顶部的样子,通常包含网站 Logo、管理员信息、快捷操作按钮(如“更新缓存”、“清空缓存”)等。
<!-- index_top.htm 的简化内容 -->
<table width="100%" height="59" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="262" height="59" background="images/logo.jpg"> </td>
<td valign="top">
<table width="100%" height="59" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="200" height="59" align="center" valign="middle">
<!-- 欢迎信息 -->
欢迎您, <strong>{dede:adminname/}</strong>
</td>
<td>
<!-- 快捷操作按钮 -->
<a href="index.php?dopost=clearcache" target="mainframe">更新缓存</a> |
<a href="sys_info.php" target="mainframe">系统信息</a> |
<a href="login.php?dopost=exit" target="_top">退出</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
{dede:adminname/}: 这是一个 DedeCMS 的模板标签,会被解析为当前登录的管理员用户名。
index_menu.htm - 左侧菜单模板
这个文件定义了左侧导航菜单的结构,它通常是一个包含 <ul> 或 <table> 的列表,菜单项通过 PHP 动态生成。
<!-- index_menu.htm 的简化内容 -->
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top" style="padding: 10px 0;">
<div id="menu">
<!-- 菜单项由 PHP 循环生成 -->
{dede:channel ArtList='top' typeid='0'}
<dl>
<dt><a href='javascript:;' onclick="LoadMain('{dede:field name='phpurl'/}/content_list.php?channelid={dede:field id/}', '{dede:field name='typename'/}')">{dede:field name='typename'/}</a></dt>
<!-- 二级菜单 -->
<dd>
{dede:channel type='son' currentstyle="<a href='[field:typelink/]' class='thisclass'>[field:typename/]</a> | "}
<a href='[field:typelink/]' target='mainframe'>[field:typename/]</a> |
{/dede:channel}
</dd>
</dl>
{/dede:channel}
</div>
</td>
</tr>
</table>
{dede:channel ArtList='top' ...}: 这是一个核心的栏目列表标签,用于获取顶级栏目。onclick="LoadMain(...)": 这是一个 JavaScript 函数,点击菜单项时,会在右侧的mainframe中加载对应的页面,实现无刷新切换内容。
index_body.htm - 主内容区模板
这个文件定义了后台首页右侧默认显示的内容,比如系统概览、待办事项、最新文档等。
<!-- index_body.htm 的简化内容 -->
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="table maintable">
<tr>
<td colspan="2" class="head">系统信息</td>
</tr>
<tr>
<td width="150" height="24">当前管理员</td>
<td>{dede:adminname/}</td>
</tr>
<tr>
<td height="24">服务器操作系统</td>
<td>{dede:global.cfg_os/}</td>
</tr>
<!-- 更多系统信息行... -->
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="table maintable">
<tr>
<td colspan="2" class="head">待审核文档</td>
</tr>
{dede:arclist row='5' channelid='-1' typeid='0' subday='30' status='-1'}
<tr>
<td><a href='javascript:OpenList("{dede:field name='arcurl'/}", "{dede:field name='title'/}");'>{dede:field name='title'/}</a></td>
<td>{dede:field name='pubdate' function='GetDateMk(@me)'/}</td>
</tr>
{/dede:arclist}
</table>
- 这里使用了多个模板标签来动态获取数据,如
{dede:global.cfg_os/}获取全局变量,{dede:arclist/}获取待审核文章列表。
如何自定义后台模板
如果你想修改 DedeCMS 5.7 后台的外观和布局,主要操作以下两个部分:
修改样式(推荐,风险低)
这是最简单也是最安全的方法,你几乎不需要修改任何 .htm 模板文件。
- 操作文件:
/dedem/style/screen.css - :
- 颜色: 修改
.head,.table,body等选择器的background-color,color属性来改变整体配色。 - 字体: 修改
body的font-family来改变字体。 - 布局: 修改
width,padding,margin等属性来调整间距和布局。 - 图标: 如果你需要更换图标,可以修改
.htm文件中<img>标签的src属性,指向/dedem/images/目录下你的新图标。
- 颜色: 修改
修改模板结构(需谨慎,风险高)
如果你想大幅改变布局,比如去掉框架、改变菜单位置等,就需要修改 .htm 模板文件。
- 操作文件:
/dedem/templets/目录下的相关.htm文件。 - :
- 修改顶部: 编辑
index_top.htm,可以增加或删除功能按钮。 - 修改菜单: 编辑
index_menu.htm,可以改变菜单的样式(从table改为ul/li)或结构。 - 修改主框架: 编辑
index_frame.htm,这是最复杂的修改,因为它涉及到整个页面的框架结构。强烈建议在修改前备份原文件,因为错误的frameset定义会导致后台无法正常访问。 - 区: 编辑
index_body.htm或其他功能模块的模板文件,来调整各个管理界面的布局。
- 修改顶部: 编辑
重要注意事项
- 备份!备份!备份! 在修改任何核心文件之前,务必备份整个
/dedem/目录,特别是templets和style目录,一旦修改出错,可以通过备份快速恢复。 - 权限问题: 确保你的 Web 服务器(如 Apache/Nginx)对
/dedem/目录有正确的读写权限,否则你可能会无法保存修改。 - 缓存机制: DedeCMS 有模板缓存,如果你修改了模板文件但看不到效果,可以尝试在后台的“系统” -> “系统基本参数” -> “性能选项”中清空一下所有缓存。
- 安全性: DedeCMS 5.7 是一个非常古老的版本,存在许多已知的安全漏洞。强烈建议不要将其用于任何生产环境(即真实的网站),仅用于学习、怀旧或本地测试,如果你正在运营一个网站,请升级到更现代、更安全的 CMS 系统。
希望这份详细的解析能帮助你理解 DedeCMS 5.7 的后台模板结构!
