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

(图片来源网络,侵删)
第一部分:核心概念 - 必须先搞懂
在动手之前,你必须理解帝国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路径等,方便模板的移植和修改。
第二部分:制作流程 - 从零开始做一个模板
假设我们要制作一个简单的博客模板。

(图片来源网络,侵删)
步骤 1:准备模板文件和目录
- 在
e目录下创建一个新文件夹,命名为myblog。 - 在
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>© 2025 我的帝国博客. All Rights Reserved.</p>
</footer>
</body>
</html>
步骤 3:编写列表内容模板 (list.var.php)
这个文件定义了列表中每一篇文章的显示样式,它需要被 index.php 或 list.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)
这个模板和首页很像,但它只显示特定栏目下的文章。

(图片来源网络,侵删)
<!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后台进行绑定和设置。
- 进入后台:
帝国CMS后台 -> 系统 -> 数据表与系统模型 -> 管理数据表。 - 选择新闻系统:找到
新闻系统(通常是enews表)。 - 管理字段:点击
管理字段,确保你需要用到的字段(如标题、简介、正文、发布时间等)都存在并且已经勾选“在列表页作为主字段显示”(如果是list.var.php中要用到的)。 - 绑定模板:
首页模板:首页管理->选择首页模板-> 选择你创建的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使用手册->模板制作。
- 位置:帝国CMS后台 ->
- 视频教程:在B站、腾讯课堂等平台搜索“帝国CMS模板教程”,有很多手把手的教学视频。
- 模板市场:购买现成的优质模板,然后通过研究其代码来学习,这是最快的方式之一。
- 开源模板:寻找一些开源的帝国CMS模板,下载下来分析其结构和标签用法。
常见问题
-
Q: 为什么我的列表页显示不出来内容?
- A: 检查以下几点:
list.var.php是否已创建并内容正确?- 后台是否为
[!--news.list--]标签绑定了正确的tempid模板ID)? - 该栏目下是否有已审核的文章?
- 检查字段是否在后台“管理字段”中被勾选为“在列表页作为主字段显示”。
- A: 检查以下几点:
-
Q: 标签调用不出来数据,显示空白?
- A:
- 确认标签名称拼写是否正确,
newstime不是newtime。 - 确认数据表中该字段是否有内容。
- 检查PHP标签是否使用了
<?=短标签形式,服务器是否开启了短标签支持。
- 确认标签名称拼写是否正确,
- A:
制作帝国CMS模板是一个“理论 + 实践”的过程,理解了核心概念后,最好的方法就是动手去创建一个简单的模板,从首页开始,逐步添加列表页、内容页,遇到问题再回头查阅资料或官方文档,随着经验的积累,你会发现模板制作其实并不复杂,而且非常有成就感,祝你成功!
