帝国CMS模板制作全教程
第一部分:核心概念
在开始制作模板之前,你必须理解帝国CMS模板的核心工作原理,它不像WordPress那样是PHP文件,而是通过一套标签系统来生成最终页面。

模板构成
一个帝国CMS的模板通常由以下几个核心文件组成,它们都存放在 e/data/template/ 目录下:
index.html:网站首页模板。list.html:列表页模板(用于栏目、专题等)。show.html页模板(用于查看文章详情)。page.html:自定义页面模板(用于制作如“关于我们”、“联系我们”等静态页面)。templets/:存放模板中引用的CSS、JS、图片等资源的文件夹。function.php:模板函数文件,可以在这里写自定义的PHP函数,供模板调用。
模板引擎 帝国CMS使用自己的模板引擎,通过特定的标签来调用数据和执行逻辑。
- 变量标签:
<?=$变量名?>,用于输出一个变量的值,比如文章标题、栏目名称等。 - 循环标签:
[!--empirenews.listtemp--] ... [!--empirenews.listtemp--],用于循环输出列表数据,如文章列表、图片集等。 - 条件标签:
[!--if--] ... [!--else--] ... [!--endif--],用于根据条件判断是否输出某段代码。 - 函数标签:
[!--函数名--],用于执行一些特定的功能,如分页、栏目导航等。 - 注释标签:
[!--注释内容--],模板引擎会忽略这部分内容,不会输出到HTML中。
第二部分:模板制作流程
准备工作
- 规划网站结构:想好你的网站有几个栏目,每个栏目放什么内容,首页要展示哪些模块。
- 准备设计稿:使用Photoshop、Figma等工具设计出网站的首页、列表页、内容页的视觉效果(UI设计稿)。
- 切图和代码:将设计稿切图,并使用HTML + CSS + JS编写出静态的网页。这是最关键的一步,帝国CMS模板制作的核心就是将这个静态页面“帝国化”,即用帝国CMS的标签替换掉静态内容。
创建模板文件夹

在 e/data/template/ 目录下,创建一个属于你自己的文件夹,mywebsite,所有模板文件和资源都放在这个文件夹里。
编写静态页面
将上一步切好的静态HTML、CSS、JS文件分别放到 mywebsite 和 mywebsite/templets 目录中。
将静态页面“帝国化”

这是教程的核心,我们将以最常用的首页、列表页、内容页为例,讲解如何替换静态内容。
第三部分:实战开发详解
首页模板 (index.html)
假设你的静态首页HTML结构如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">我的网站</title>
<link rel="stylesheet" href="/templets/mywebsite/css/style.css">
</head>
<body>
<!-- 顶部导航 -->
<div class="header">
<a href="/">首页</a>
<a href="/news/">新闻中心</a>
<a href="/about/">关于我们</a>
</div>
<!-- 轮播图 -->
<div class="slider">
<img src="/templets/mywebsite/images/banner1.jpg" alt="banner1">
</div>
<!-- 文章列表 -->
<div class="news-list">
<h2>最新文章</h2>
<ul>
<li><a href="#">文章标题一</a></li>
<li><a href="#">文章标题二</a></li>
<li><a href="#">文章标题三</a></li>
</ul>
</div>
<!-- 页脚 -->
<div class="footer">
<p>© 2025 我的网站 版权所有</p>
</div>
</body>
</html>
替换过程:
-
标题替换:
- 静态:
<title>我的网站</title> - 动态:
<title><?=$public_r['sitename']?> - <?=$public_r['sitekeywords']?></title><?=$public_r['sitename']?>是调用网站后台设置的“网站名称”。<?=$public_r['sitekeywords']?>是调用网站“网站关键字”。
- 静态:
-
栏目导航替换:
- 静态:
<a href="/news/">新闻中心</a> - 动态:使用栏目循环标签
[!--class.menu--]<div class="header"> [!--class.menu--] </div>
这个标签会自动循环输出你在后台设置的“主导航”栏目,并生成对应的链接。
- 静态:
-
轮播图替换:
- 静态:
<img src="/templets/mywebsite/images/banner1.jpg" alt="banner1"> - 动态:使用推荐位/专题标签,假设你在后台创建了一个名为
首页幻灯片的推荐位。<div class="slider"> [!--news newspos="首页幻灯片" num="5"!--] <!-- 这里会循环输出5条推荐位新闻 --> <a href="[!--titleurl--]"><img src="[!--titlepic--]" alt="[!--title--]"></a> <!-- 循环结束 --> [!--news--] </div>
[!--news newspos="首页幻灯片" num="5"!--]:开始循环,调用“首页幻灯片”推荐位的5条信息。[!--titleurl--]:文章链接。[!--titlepic--]图片。[!--title--]。[!--news--]:循环结束。
- 静态:
-
文章列表替换:
- 静态:
<li><a href="#">文章标题一</a></li> - 动态:使用列表循环标签
[!--empirenews.listtemp--]<div class="news-list"> <h2>最新文章</h2> <ul> [!--empirenews.listtemp--] <li><a href="[!--titleurl--]">[!--title--]</a></li> [!--empirenews.listtemp--] </ul> </div>这个标签默认会调用首页的最新文章列表,你也可以指定栏目ID,
[!--empirenews.listtemp--]修改为[!--empirenews.listtemp--](classid=1是你想要调用的栏目ID)。
- 静态:
-
页脚信息替换:
- 静态:
© 2025 我的网站 版权所有 - 动态:
<p>© <?=$year;?> <?=$public_r['sitename']?> 版权所有</p><?=$year;?>是调用当前年份的PHP变量。
- 静态:
列表页模板 (list.html)
列表页的替换相对简单,主要是替换列表部分的循环标签。
- :
<title><?=$class_r[$GLOBALS['navclassid']]['classname']?> - <?=$public_r['sitename']?></title><?=$class_r[$GLOBALS['navclassid']]['classname']?>是调用当前栏目的名称。
- 面包屑导航:
[!--当前位置--],这个标签会自动生成类似“首页 > 新闻中心”的路径。 - :
<h2><?=$class_r[$GLOBALS['navclassid']]['classname']?></h2> <ul> [!--empirenews.listtemp--] <li> <span>[!--newstime--]</span> <a href="[!--titleurl--]">[!--title--]</a> </li> [!--empirenews.listtemp--] </ul>[!--newstime--]:文章发布时间。
- 分页:
[!--pagestats--],这个标签会自动生成分页导航。
内容页模板 (show.html)
页用于展示单篇文章的详情。
- :
<title><?=$navinfor['title']?> - <?=$class_r[$GLOBALS['navclassid']]['classname']?> - <?=$public_r['sitename']?></title> - :
<h1><?=$navinfor['title']?></h1> - 文章信息:
<div class="info"> <span>发布时间:<?=date('Y-m-d H:i:s', $navinfor['newstime'])?></span> <span>来源:<?=$navinfor['befrom']?></span> <span>点击:<?=$navinfor['onclick']?></span> </div> - :
<?=$navinfor['text']?>,这是调用文章正文内容的核心标签。 - 上下页导航:
<div class="page-nav"> [!--info.pre--] | [!--info.next--] </div>[!--info.pre--]会自动生成上一篇文章的链接和标题。[!--info.next--]会自动生成下一篇文章的链接和标题。
第四部分:模板函数 (function.php)
如果模板中需要一些复杂的功能,比如格式化日期、截取字符串等,可以在 function.php 中自定义函数。
示例:自定义一个日期格式化函数
-
在
mywebsite/function.php中写入:function formatMyDate($timestamp) { return date('Y年m月d日', $timestamp); } -
在模板中调用:
<span>发布时间:<?=formatMyDate($navinfor['newstime'])?></span>
这样,输出的日期格式就是“2025年10月27日”这样的形式。
第五部分:安装与管理
-
安装模板:
- 登录帝国CMS后台。
- 进入
模板->管理模板。 - 点击
增加模板,选择目录方式。 - 填写模板名称(如“我的网站”),选择模板目录(
mywebsite),然后提交。
-
应用模板:
- 进入
模板->选择模板。 - 在“首页模板”、“列表页模板”、“内容页模板”等下拉菜单中,选择你刚刚创建的“我的网站”模板。
- 点击
提交。
- 进入
-
更新缓存:
- 模板修改后,如果前台没有生效,请务必在后台
更新首页或更新栏目,或者在系统->更新缓存中更新缓存。
- 模板修改后,如果前台没有生效,请务必在后台
第六部分:常用标签速查表
| 功能 | 标签代码 | 说明 |
|---|---|---|
| 网站信息 | <?=$public_r['sitename']?> |
网站名称 |
<?=$public_r['sitekeywords']?> |
网站关键字 | |
<?=$public_r['siteinfo']?> |
网站描述 | |
| 栏目信息 | <?=$class_r[$classid]['classname']?> |
指定ID的栏目名 |
[!--class.menu--] |
主导航菜单 | |
| 文章循环 | [!--empirenews.listtemp--]...[!--empirenews.listtemp--] |
列表循环 |
[!--title--] |
||
[!--titleurl--] |
文章链接 | |
[!--titlepic--] |
图 | |
[!--smalltext--] |
文章摘要 | |
[!--newstime--] |
文章发布时间 (格式化前) | |
| 文章详情 | <?=$navinfor['title']?> |
当前文章标题 |
<?=$navinfor['text']?> |
当前文章正文 | |
<?=$navinfor['newstime']?> |
当前文章发布时间 (时间戳) | |
| 分页/导航 | [!--pagestats--] |
列表分页 |
[!--info.pre--] |
上一篇 | |
[!--info.next--] |
下一篇 | |
[!--当前位置--] |
面包屑导航 | |
| 推荐位/专题 | [!--news newspos="推荐位名" num="5"--]...[!--news--] |
调用推荐位 |
总结与建议
- 先静态,后动态:永远先做出一个完美的静态页面,再用帝国CMS的标签去替换,这是最不容易出错的方法。
- 善用官方手册:帝国CMS官方有详细的模板标签手册,遇到不熟悉的标签随时查阅。
- 保持代码整洁:良好的HTML结构和CSS注释,会让你后期维护和修改变得非常轻松。
- 调试技巧:如果某个标签没有输出内容,检查标签名称是否拼写错误,或者后台对应的设置(如推荐位、栏目)是否正确。
希望这份教程能对你有所帮助!祝你制作出精美的帝国CMS网站!
