Destoon 的后台页面,通常指的是管理员登录后进入的 admin/ 目录下的界面,这个界面本身也是一套模板系统,但它与前台面向用户的模板有显著的不同。
核心特点
- 高度集成化:后台页面不像前台那样由多个独立的文件(如
header.htm,footer.htm,category.htm)组成,它主要依赖于几个核心文件来构建整个布局。 - 基于表格布局:为了在复杂的表单和数据列表中保持高度兼容性和对齐精度,Destoon 后台大量使用
<table>进行布局,虽然这在现代前端开发中不推荐,但在 Destoon 的时代和其维护的便利性上,这是一种高效的选择。 - 模块化设计:通过
include语句,将通用的头部、左侧菜单、底部等部分整合到每个页面中,实现了代码的复用。 - 权限控制:后台页面的显示和功能权限由 Destoon 的权限系统严格控制,不同角色的管理员(如超级管理员、编辑、财务)看到的菜单和可操作的功能是不同的。
后台页面的核心文件结构
当你进入 admin/ 目录时,你会看到类似以下的文件结构:
admin/
├── index.php // 后台入口文件,处理登录逻辑和后台首页
├── file.php // 文件管理模块
├── module.php // 模块管理(核心)
├── setting.php // 系统设置
├── template/ // **后台模板目录**
│ ├── default/ // 默认后台模板文件夹
│ │ ├── index.htm // 后台首页的模板文件
│ │ ├── header.htm // 公共头部
│ │ ├── footer.htm // 公共底部
│ │ ├── menu.htm // 左侧菜单
│ │ └── ... // 其他模块的模板文件,如 module_list.htm, module_edit.htm 等
│ └── my_template/ // 你自己创建的后台模板文件夹
├── images/ // 后台使用的图片资源
└── ... // 其他功能模块的PHP文件 (company.php, supply.php, etc.)
关键模板文件详解
header.htm - 公共头部
这是每个后台页面都会引入的顶部部分,它通常包含:
- Logo 和系统名称:
{DT_SITE_NAME}和{DT_LOGO}等变量。 - 管理员信息:显示当前登录的管理员用户名、等级等。
- 全局导航栏:一些常用的、全局性的链接,如“返回前台”、“清空缓存”、“帮助”等。
- CSS 和 JavaScript 引入:定义了整个后台的样式和交互行为,引入
admin.css样式表和一些js文件。
示例结构:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset={DT_CHARSET}" />{if $MODULE[$moduleid][name]}{$MODULE[$moduleid][name]} - {/if}{DT_NAME} - Powered by Destoon</title>
<meta name="generator" content="Destoon B2B" />
<meta name="copyright" content="Destoon Inc." />
<link rel="stylesheet" type="text/css" href="{DT_PATH}file/admin.css" />
<script type="text/javascript" src="{DT_PATH}file/js/core.js"></script>
<!-- 其他 JS 和 CSS -->
</head>
<body>
<div id="head">
<div class="head_l">...</div>
<div class="head_r">...</div>
</div>
<div id="main">
footer.htm - 公共底部
每个后台页面都会引入的底部部分,通常包含:
- 版权信息:
Powered by Destoon B2B V{DT_VERSION}。 - 页面加载时间:显示页面生成耗时,用于性能监控。
- 结束标签:闭合
header.htm中打开的<div id="main">和<body>,<html>
示例结构:
<!-- 页面主要内容区域 -->
</div> <!-- 结束 #main -->
<div id="foot">
<p>Copyright © {DT_Y} {DT_NAME} All rights reserved. | Powered by <a href="http://www.destoon.com" target="_blank">Destoon B2B V{DT_VERSION}</a></p>
<p>Process time: {DT_TIME} second(s), {DB_QUERY} SQL Query, {DB_TIME} second(s), Gzip {GZIP_ON}, Memory: {MEMORY_USE}</p>
</div>
</body>
</html>
menu.htm - 左侧菜单
这是后台界面的核心导航组件,它是一个循环结构,根据管理员权限动态生成菜单项。
- 顶级菜单:通常是大模块,如“企业”、“产品”、“资讯”、“会员”、“系统”等。
- 子菜单:点击顶级菜单后展开的二级、三级菜单,如“企业”模块下的“企业列表”、“添加企业”、“审核企业”等。
核心逻辑:
{loop $menu $k $m}
{if $m['level'] == 1}
<!-- 顶级菜单项 -->
<div class="menu_main">
<h3><span class="icon_{$m['icon']}"></span>{$m['name']}</h3>
<ul>
{loop $menu $k2 $m2}
{if $m2['parentid'] == $m['itemid']}
<!-- 子菜单项 -->
<li><a href="{$m2['link']}" {if $m2['target']}target="{$m2['target']}"{/if} {if $moduleid == $m2['moduleid']}class="on"{/if}>{$m2['name']}</a></li>
{/if}
{/loop}
</ul>
</div>
{/if}
{/loop}
$menu是一个从 PHP 传递过来的数组,包含了所有有权限显示的菜单项。- 通过
level和parentid来构建多级菜单的层级关系。 {if $moduleid == $m2['moduleid']}class="on"{/if}这句代码用于高亮显示当前所在的菜单项。
模块列表/编辑模板 (e.g., module_list.htm, module_edit.htm)
这些是具体功能页面(如“模块管理”的列表页、“添加模块”的编辑页)的模板文件,它们位于 template/default/ 目录下,与 PHP 文件(如 module.php)相对应。
module_list.htm (列表页) 的典型结构:
{template 'header'}
<div class="tt">模块管理</div>
<!-- 搜索表单 -->
<form name="searchform" method="get" action="module.php">
<input type="hidden" name="module" value="{$module}" />
<input type="hidden" name="file" value="{$file}" />
<!-- 搜索条件输入框... -->
<button type="submit">搜索</button>
</form>
<!-- 数据表格 -->
<table class="table_list">
<tr>
<th>ID</th>
<th>模块名称</th>
<th>表名</th>
<th>状态</th>
<th>操作</th>
</tr>
{loop $lists $t}
<tr>
<td>{$t['itemid']}</td>
<td>{$t['itemname']}</td>
<td>{$t['tablename']}</td>
<td>{if $t['status']}开启{else}关闭{/if}</td>
<td>
<a href="module.php?item=edit&itemid={$t['itemid']}">编辑</a> |
<a href="javascript:;" onclick="if(confirm('确定要删除吗?')) location.href='module.php?item=delete&itemid={$t['itemid']}';">删除</a>
</td>
</tr>
{/loop}
</table>
{template 'footer'}
{template 'header'}和{template 'footer'}是引入公共头尾的标准方式。{loop $lists $t}循环 PHP 文件中传递过来的数据数组$lists。- 表格
<table class="table_list">是 Destoon 后台数据展示的标准样式。
如何修改后台页面?
-
备份:在进行任何修改之前,务必备份原文件,特别是
template/default/目录。 -
创建新模板(推荐):
- 在
admin/template/目录下新建一个文件夹,my_admin。 - 将
default文件夹中的header.htm,footer.htm,menu.htm以及你想要修改的模块模板文件(如module_list.htm)复制到my_admin文件夹中。 - 登录 Destoon 后台 ->
系统设置->界面设置->后台模板,选择你刚刚创建的my_admin。 - 这样,你所有的修改都将在自己的模板文件夹中进行,不会影响默认模板,升级时也更安全。
- 在
-
直接修改(不推荐):
- 直接编辑
admin/template/default/下的文件,这种方式简单直接,但未来 Destoon 升级时,你的修改可能会被覆盖。
- 直接编辑
Destoon 后台模板是一个结构清晰、逻辑严谨的系统,理解其核心文件 (header.htm, footer.htm, menu.htm) 和数据传递方式(PHP 变量传递给模板)是进行二次开发和自定义的关键,它虽然使用了相对老旧的表格布局,但其模块化和权限控制的思路对于理解 PHP 时代的 CMS 系统非常有帮助。
