帝国CMS模板制作全攻略

帝国CMS是一款功能强大的PHP网站管理系统,其模板系统是其灵活性和可扩展性的核心,掌握模板制作,意味着你可以随心所欲地控制网站的外观和布局。

帝国cms 模板 教程
(图片来源网络,侵删)

第一部分:核心概念 - 必须先搞懂

在动手之前,你必须理解帝国CMS模板的几个基本组成部分,这就像盖房子前要懂“砖、瓦、水泥、钢筋”一样。

模板文件结构

一个标准的帝国CMS模板通常由以下几个部分组成:

  • e 目录: 这是模板的根目录,你创建的任何模板文件夹都必须放在 e 目录下,你创建一个名为 mytemplate 的模板,那么路径就是 /e/mytemplate/
  • index.php: 首页模板文件,这是网站的入口,用户访问你的域名时,首先加载的就是这个文件。
  • list.php: 列表页模板文件,用于显示某个栏目下的文章列表,新闻中心”、“产品展示”等。
  • show.php: 内容页模板文件,用于显示单篇文章的详细内容,例如点击新闻标题后进入的页面。
  • page.php: 自定义页面模板文件,用于制作一些固定页面,关于我们”、“联系我们”等。
  • images/ 目录: 存放模板所需的图片、CSS、JS等静态资源文件。
  • style/ 目录: (可选) 用于存放CSS样式文件,方便管理。
  • js/ 目录: (可选) 用于存放JavaScript脚本文件。

模板引擎 - 核心中的核心

帝国CMS使用自己的一套模板引擎,它的语法非常简单,主要包含以下几种标签:

  • <?php ... ?>: PHP原生代码,如果你需要编写复杂的逻辑,可以直接在里面写PHP代码。注意: 使用PHP代码可能会降低模板的可维护性,应尽量使用系统标签。
  • <!--list.title-->: 字段标签,用于调用数据库中的字段内容。list.title 调用列表标题,show.title 调用内容页标题,这是最常用的标签。
  • [!--news.list--]: 循环标签,用于循环输出一个列表,比如文章列表、产品列表等,它需要配合一个模板文件(如 list.var.php)来工作。
  • [!--empirenews.listtemp--]: 模板,这个标签用在 list.php 中,指定当前列表页要调用哪个列表内容模板(通常是 list.var.php)。
  • [!--showpage--]: 分页标签**,在列表页和内容页中,用于显示分页导航(如“首页 上一页 1 2 3 下一页 末页”)。
  • <?=$public['style']?>: 公共变量,用于调用系统公共变量,如CSS路径、JS路径等,方便模板的移植和修改。

第二部分:制作流程 - 从零开始做一个模板

假设我们要制作一个简单的博客模板。

帝国cms 模板 教程
(图片来源网络,侵删)

步骤 1:准备模板文件和目录

  1. e 目录下创建一个新文件夹,命名为 myblog
  2. e/myblog/ 目录下创建以下文件和文件夹:
    • index.php (首页)
    • list.php (列表页)
    • show.php (内容页)
    • page.php (自定义页面)
    • images/ (存放图片)
    • style/ (存放CSS)
    • js/ (存放JS)

步骤 2:编写首页模板 (index.php)

首页通常包含:网站头部、主导航、最新文章列表、网站底部。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">我的帝国博客 - 首页</title>
    <!-- 调用CSS样式 -->
    <link rel="stylesheet" href="[!--news.url--]e/myblog/style/style.css">
</head>
<body>
    <!-- 网站头部 -->
    <header>
        <h1>我的帝国博客</h1>
        <p>一个分享技术与生活的地方</p>
    </header>
    <!-- 主导航 -->
    <nav>
        <ul>
            <!-- 调用栏目导航,这是系统标签,具体写法请参考官方文档或你的栏目设置 -->
            [!--class.menu--]
        </ul>
    </nav>
    <!-- 主要内容区 -->
    <main>
        <h2>最新文章</h2>
        <!-- 
            这里是核心:调用最新文章列表
            [!--news.list--] 表示调用新闻列表
            tempid=1 表示调用ID为1的列表内容模板 (我们稍后创建)
            classid=0 表示调用所有栏目
            limit=10 表示只显示10条
        -->
        [!--news.list--]
    </main>
    <!-- 网站底部 -->
    <footer>
        <p>&copy; 2025 我的帝国博客. All Rights Reserved.</p>
    </footer>
</body>
</html>

步骤 3:编写列表内容模板 (list.var.php)

这个文件定义了列表中每一篇文章的显示样式,它需要被 index.phplist.php 中的 [!--news.list--] 标签调用。

<!-- 定义一个循环体,系统会自动填充数据 -->
<li>
    <a href="[!--titleurl--]">
        <!-- 调用文章标题 -->
        [!--title--]
    </a>
    <span class="date">[!--newstime--]</span>
    <!-- 调用文章简介,如果为空则显示“暂无简介” -->
    [!--smalltext--] 
</li>

注意list.var.php 通常是一个循环片段,而不是完整的HTML结构,循环的开始和结束由 [!--news.list--] 标签自动控制。

步骤 4:编写栏目列表页 (list.php)

这个模板和首页很像,但它只显示特定栏目下的文章。

帝国cms 模板 教程
(图片来源网络,侵删)
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8"><?=$class_r[$GLOBALS[navid]]['classname']?> - 我的帝国博客</title>
    <link rel="stylesheet" href="[!--news.url--]e/myblog/style/style.css">
</head>
<body>
    <!-- 复用首页的头部和导航 -->
    <?php include('e/myblog/inc/header.php'); ?>
    <main>
        <h2><?=$class_r[$GLOBALS[navid]]['classname']?></h2>
        <!-- 
            调用当前栏目的文章列表
            tempid=1 和之前一样
            classid=$GLOBALS[navid] 是关键,它自动获取当前栏目的ID
        -->
        [!--news.list--]
        <!-- 调用分页 -->
        [!--showpage--]
    </main>
    <!-- 复用首页的底部 -->
    <?php include('e/myblog/inc/footer.php'); ?>
</body>
</html>

优化:为了减少重复代码,我们可以把头部和 footer 单独做成文件(如 header.php, footer.php),然后在各个页面中用 include 包含进来。

步骤 5:编写内容页模板 (show.php)

页需要显示文章的完整信息:标题、发布时间、来源、点击量、内容、上下篇等。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8"><?=$navinfor['title']?> - <?=$class_r[$GLOBALS[navid]]['classname']?> - 我的帝国博客</title>
    <link rel="stylesheet" href="[!--news.url--]e/myblog/style/style.css">
</head>
<body>
    <?php include('e/myblog/inc/header.php'); ?>
    <main>
        <article>
            <h1><?=$navinfor['title']?></h1>
            <div class="info">
                <span>发布时间:<?=$navinfor['newstime']?></span>
                <span>点击量:<?=$navinfor['onclick']?></span>
                <span>来源:<?=$navinfor['fromurl']?></span>
            </div>
            <div class="content">
                <!-- 调用文章正文 -->
                <?=$navinfor['newstext']?>
            </div>
            <!-- 调用上下篇链接 -->
            [!--prenext--]
        </article>
    </main>
    <?php include('e/myblog/inc/footer.php'); ?>
</body>
</html>

字段标签说明

  • <?=$navinfor['title']?>: 获取文章标题。
  • <?=$navinfor['newstime']?>: 获取文章发布时间。
  • <?=$navinfor['onclick']?>: 获取文章点击量。
  • <?=$navinfor['newstext']?>: 获取文章正文内容。

步骤 6:后台设置

模板文件写好后,需要在帝国CMS后台进行绑定和设置。

  1. 进入后台帝国CMS后台 -> 系统 -> 数据表与系统模型 -> 管理数据表
  2. 选择新闻系统:找到 新闻系统 (通常是 enews 表)。
  3. 管理字段:点击 管理字段,确保你需要用到的字段(如标题、简介、正文、发布时间等)都存在并且已经勾选“在列表页作为主字段显示”(如果是 list.var.php 中要用到的)。
  4. 绑定模板
    • 首页模板首页管理 -> 选择首页模板 -> 选择你创建的 myblog 模板下的 index.php
    • 列表页模板栏目管理 -> 编辑每个栏目 -> 在“列表页模板”中选择 myblog/list.php
    • 内容页模板:同样在 栏目管理 中,为每个栏目设置“内容页模板”,选择 myblog/show.php
    • 模板公共模板 -> 管理列表内容模板 -> 添加一个新模板,把 list.var.php 的内容粘贴进去,并记录下它的ID(比如是1),然后在首页或列表页的 [!--news.list--] 标签中指定 tempid=1

第三部分:常用标签与技巧

核心标签速查表

用途 标签示例 说明
网站信息 [!--news.url--] 网站地址
[!--site--] 网站名称
栏目信息 <?=$class_r[$GLOBALS[navid]]['classname']?> 当前栏目名称
<?=$class_r[$GLOBALS[navid]]['classpath']?> 当前栏目路径
文章信息 [!--title--]
[!--titleurl--] 文章链接
[!--newstime--] 发布时间
[!--smalltext--] 文章简介
[!--keyboard--] 文章关键字
[!--writer--] 作者
<?=$navinfor['newstext']?> 文章正文
列表/循环 [!--news.list--] 调用新闻列表
[!--empirenews.listtemp--] 指定列表内容模板ID
分页 [!--showpage--] 显示分页导航
其他 [!--prenext--] 显示上下篇文章链接

实用技巧

  • 模板分离:将 header.php, footer.php, sidebar.php 等公共部分分离出来,用 include 包含,这是保持代码整洁的关键。
  • CSS/JS路径:始终使用 [!--news.url--]e/myblog/... 这样的绝对路径,或者使用 <?=$public['style']?> 等公共变量,这样在更换域名或移动目录时不会出错。
  • 条件判断:可以使用PHP原生代码进行判断。
    <?php
    if($GLOBALS[navid] == 1) {
        echo '这是首页';
    } else {
        echo '这是其他页面';
    }
    ?>
  • 调用特定栏目:在首页调用某个指定ID的栏目文章。
    [!--news.list--]

    然后在后台的“列表内容模板管理”中,为这个标签单独创建一个模板。


**第四部分:进阶与资源

学习资源推荐

  • 官方文档这是最权威、最准确的资料,虽然官方文档有时比较“硬核”,但所有标签和函数的用法都能在里面找到。
    • 位置:帝国CMS后台 -> 帮助 -> 帝国CMS使用手册 -> 模板制作
  • 视频教程:在B站、腾讯课堂等平台搜索“帝国CMS模板教程”,有很多手把手的教学视频。
  • 模板市场:购买现成的优质模板,然后通过研究其代码来学习,这是最快的方式之一。
  • 开源模板:寻找一些开源的帝国CMS模板,下载下来分析其结构和标签用法。

常见问题

  • Q: 为什么我的列表页显示不出来内容?

    • A: 检查以下几点:
      1. list.var.php 是否已创建并内容正确?
      2. 后台是否为 [!--news.list--] 标签绑定了正确的 tempid模板ID)?
      3. 该栏目下是否有已审核的文章?
      4. 检查字段是否在后台“管理字段”中被勾选为“在列表页作为主字段显示”。
  • Q: 标签调用不出来数据,显示空白?

    • A:
      1. 确认标签名称拼写是否正确,newstime 不是 newtime
      2. 确认数据表中该字段是否有内容。
      3. 检查PHP标签是否使用了 <?= 短标签形式,服务器是否开启了短标签支持。

制作帝国CMS模板是一个“理论 + 实践”的过程,理解了核心概念后,最好的方法就是动手去创建一个简单的模板,从首页开始,逐步添加列表页、内容页,遇到问题再回头查阅资料或官方文档,随着经验的积累,你会发现模板制作其实并不复杂,而且非常有成就感,祝你成功!