Destoon 的后台页面,通常指的是管理员登录后进入的 admin/ 目录下的界面,这个界面本身也是一套模板系统,但它与前台面向用户的模板有显著的不同。

核心特点

  1. 高度集成化:后台页面不像前台那样由多个独立的文件(如 header.htm, footer.htm, category.htm)组成,它主要依赖于几个核心文件来构建整个布局。
  2. 基于表格布局:为了在复杂的表单和数据列表中保持高度兼容性和对齐精度,Destoon 后台大量使用 <table> 进行布局,虽然这在现代前端开发中不推荐,但在 Destoon 的时代和其维护的便利性上,这是一种高效的选择。
  3. 模块化设计:通过 include 语句,将通用的头部、左侧菜单、底部等部分整合到每个页面中,实现了代码的复用。
  4. 权限控制:后台页面的显示和功能权限由 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 &copy; {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 传递过来的数组,包含了所有有权限显示的菜单项。
  • 通过 levelparentid 来构建多级菜单的层级关系。
  • {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 后台数据展示的标准样式。

如何修改后台页面?

  1. 备份:在进行任何修改之前,务必备份原文件,特别是 template/default/ 目录。

  2. 创建新模板(推荐)

    • admin/template/ 目录下新建一个文件夹,my_admin
    • default 文件夹中的 header.htm, footer.htm, menu.htm 以及你想要修改的模块模板文件(如 module_list.htm)复制到 my_admin 文件夹中。
    • 登录 Destoon 后台 -> 系统设置 -> 界面设置 -> 后台模板,选择你刚刚创建的 my_admin
    • 这样,你所有的修改都将在自己的模板文件夹中进行,不会影响默认模板,升级时也更安全。
  3. 直接修改(不推荐)

    • 直接编辑 admin/template/default/ 下的文件,这种方式简单直接,但未来 Destoon 升级时,你的修改可能会被覆盖。

Destoon 后台模板是一个结构清晰、逻辑严谨的系统,理解其核心文件 (header.htm, footer.htm, menu.htm) 和数据传递方式(PHP 变量传递给模板)是进行二次开发和自定义的关键,它虽然使用了相对老旧的表格布局,但其模块化和权限控制的思路对于理解 PHP 时代的 CMS 系统非常有帮助。