本教程将以最通用、最具代表性的“帝国CMS”为例进行讲解,因为其模板机制是这类系统的典型代表,其他系统(如织梦)的原理和结构高度相似,可以举一反三。

CMStop 模板制作教程:从零开始打造你的网站
前言:理解 CMStop 模板的核心
在学习之前,我们必须明白 CMStop 模板的核心工作原理:
- 静态与动态分离:模板本身是静态的 HTML + CSS 文件,它只负责网站的“外观”(即页面布局和样式)。
- 标签调用数据:模板中通过特定的“模板标签”(如
<!--list.title-->)来标记需要动态填充内容的位置,这些标签是 CMS 系统识别的“占位符”。 - 服务器端渲染:当用户访问网站时,CMS 系统会读取模板文件,将数据库中的内容(如文章、产品、图片)替换掉模板中的标签,最后生成完整的 HTML 页面发送给用户的浏览器。
核心思想: 你先画好一个“空表格”(模板),CMS 系统自动把“数据”(内容)填进去。
准备工作:开发环境
在开始制作模板之前,你需要一个本地服务器环境来测试你的模板,推荐使用集成环境包,一键安装,非常方便。
- 推荐软件:
phpStudy(Windows) 或MAMP(Mac)。 - 环境要求:
- PHP 版本:建议 7.0 - 7.4 (根据你的 CMS 版本选择)
- 数据库:MySQL 5.6+
- Web 服务器:Apache 或 Nginx (以 Apache 为例)
安装步骤:

- 下载并安装 phpStudy。
- 启动 phpStudy,切换到“Apache”模式。
- 进入“www”目录,将你的 CMStoP 程序(例如帝国CMS)解压到该目录下的一个文件夹中,
www/empirecms。 - 在浏览器中访问
http://localhost/empirecms,按照安装向导完成安装。
模板文件结构详解
一个完整的 CMStop 模板通常由以下几个部分组成,它们位于程序根目录的 e 文件夹下。
/e/
├── admin/ # 后台管理程序 (不要动)
├── data/ # 系统数据目录 (不要动)
├── install/ # 安装程序 (安装后可删除)
├── news/ # 默认新闻模型目录
│ └── templates/ # 【核心】模板目录
│ ├── index/ # 首页模板文件夹
│ │ ├── index.html # 首页文件
│ │ └── style.css # 首页样式
│ ├── list/ # 列表页模板文件夹
│ │ ├── list.html # 列表页文件
│ │ └── style.css # 列页表样式
│ └── show/ # 内容页模板文件夹
│ ├── show.html # 内容页文件
│ └── style.css # 内容页样式
├── class/ # 核心类文件 (不要动)
├── f/ # 缓存目录 (不要动)
└── ... (其他系统文件)
关键目录:e/news/templates/
这是模板的“大本营”,CMS 系统通常按模型(如新闻、产品、下载)来组织模板,每个模型下又有 index (首页), list (列表页), show (内容页) 等子目录。
模板制作三步曲:首页、列表页、内容页
我们以制作一个简单的企业网站模板为例,来学习这三种页面的制作。
第一步:制作首页模板 (index.html)
首页是网站的“门面”,通常包含网站标志、导航栏、主要内容区(如新闻列表、产品展示)、页脚等。
-
创建基础 HTML 结构 用你熟悉的代码编辑器(如 VS Code, Sublime Text, Notepad++)创建一个
index.html文件,写入标准的 HTML5 结构。<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>这里是网站标题 <!--page.title--></title> <meta name="keywords" content="网站关键词, <!--page.keywords-->"> <meta name="description" content="网站描述, <!--page.description-->"> <link rel="stylesheet" href="/e/news/templates/index/style.css"> </head> <body> <div class="header"> <div class="logo"> <!-- 如果是动态logo,可以用标签;如果是静态图片,直接写img标签 --> <a href="[!--news.url--]"><img src="/e/data/images/logo.png" alt="公司Logo"></a> </div> <div class="nav"> <!-- 导航菜单,通常用灵动标签循环生成 --> [!--class.menu--] </div> </div> <div class="banner"> <!-- 轮播图区域,通常用专门的内容模型或广告位标签 --> <img src="/e/data/images/banner.jpg" alt="网站banner"> </div> <div class="main-content"> <div class="news-list"> <h2>公司新闻</h2> <!-- 循环输出新闻列表 --> [e:loop={"select * from [!db.pre!]ecms_news where classid in (3,4) order by newstime desc limit 10",10,24,0}] <div class="news-item"> <h3><a href="[!--titleurl--]">[!--title--]</a></h3> <p class="summary">[!--smalltext--]</p> <span class="date">[!--newstime--]</span> </div> [/e:loop] </div> <div class="side-bar"> <!-- 调用右侧边栏,比如联系我们、最新产品等 --> [!--temp.side--] <!-- 这是一个公共模板变量,可以调用一个名为 side.html 的模板 --> </div> </div> <div class="footer"> <p>版权所有 © 2025 公司名称 | <a href="[!--news.url--]">首页</a></p> </div> </body> </html> -
理解核心标签
[!--news.url--]:获取网站根地址。[!--page.title--]:获取页面标题(通常是后台设置的全局标题)。[!--class.menu--]:调用主导航菜单,会自动循环生成所有顶级栏目。[e:loop={SQL查询语句, 显示条数, 操作类型, 只显示有标题图片}]:最核心、最常用的“灵动标签”。SQL查询语句:告诉系统要从数据库的哪张表、按什么条件、排序、查询多少条数据。[!db.pre!]是表前缀,防止冲突。ecms_news是新闻数据表。classid in (3,4)表示只显示栏目ID为3和4下的新闻。显示条数:这里显示10条。循环内部标签:在[e:loop]和[/e:loop]之间,是循环体。[!--title--]。[!--titleurl--]:文章链接。[!--smalltext--]:[!--newstime--]:发布时间。
-
编写 CSS 样式 在同目录下创建
style.css文件,为你的 HTML 结构添加样式,实现美观的布局,这部分和普通网页制作完全一样。
第二步:制作列表页模板 (list.html)
列表页用于展示某个栏目下的所有文章,如“新闻中心”、“产品展示”。
-
创建
list.html它的结构和首页类似,但主要内容区是当前栏目的文章列表。<!-- list.html 的核心部分 --> <div class="news-list"> <h2>[!--classname--]</h2> <!-- 当前栏目的名称 --> <!-- 循环输出当前栏目下的新闻列表 --> [e:loop={"select * from [!db.pre!]ecms_news where classid='$GLOBALS[navclassid]' order by newstime desc",20,24,0}] <div class="news-item"> <h3><a href="[!--titleurl--]">[!--title--]</a></h3> <p class="summary">[!--smalltext--]</p> <span class="date">[!--newstime--]</span> </div> [/e:loop] <!-- 分页条 --> <div class="page"> [!--show.page--] </div> </div> -
理解核心标签
[!--classname--]:获取当前栏目的名称。$GLOBALS[navclassid]:一个全局变量,代表当前栏目的 ID,在列表页模板中,用它来筛选属于本栏目的文章。[!--show.page--]:自动生成分页导航条。
第三步:制作内容页模板 (show.html)
页用于展示单篇文章的详细内容。
-
创建
show.html它的结构更简单,主要是展示文章的完整信息。<!-- show.html 的核心部分 --> <div class="article-container"> <h1 class="title">[!--title--]</h1> <div class="info"> <span>来源:[!--source--]</span> <span>作者:[!--writer--]</span> <span>发布时间:[!--newstime--]</span> <span>浏览次数:[!--onclick--]</span> </div> <div class="content"> [!--newstext--] <!-- 这是文章的正文内容 --> </div> <div class="page-nav"> <span>上一篇:[!--pre.title--]</span> <span>下一篇:[!--next.title--]</span> </div> </div> -
理解核心标签
[!--title--]。[!--newstime--]:发布时间。[!--onclick--]:文章点击数(浏览次数)。[!--newstext--]:文章的正文内容,这是最重要的标签。[!--pre.title--]和[!--next.title--]:上一篇和下一篇的标题。
模板安装与管理
模板制作完成后,你需要把它安装到后台。
- 打包模板:将你制作好的模板文件夹(
mytemplate,里面包含index,list,show等子目录)压缩成一个.zip文件。 - 登录后台:进入你的网站后台。
- 进入模板管理:在左侧菜单中找到 “模板” -> “管理模板”。
- 上传安装:
- 选择你刚才制作的模型(如“新闻系统”)。
- 点击“选择模板文件”,上传你的
mytemplate.zip文件。 - 上传成功后,系统会自动解压。
- 设置默认模板:
- 在模板管理页面,找到你刚上传的
mytemplate。 - 点击“管理”按钮,进入模板设置。
- 分别为“首页模板”、“列表页模板”、“内容页模板”选择你对应的文件(
index.html,list.html,show.html)。 - 保存设置。
- 在模板管理页面,找到你刚上传的
清空浏览器缓存,访问你的网站,就能看到你亲手制作的模板了!
进阶技巧与注意事项
- *公共模板 (`.html
)**:像页头、页脚、侧边栏这种重复使用的部分,可以单独做成模板(如header.htmlfooter.html),然后在其他模板中用[!--temp.header--]` 这样的方式调用,便于维护。 - 变量与函数:除了简单的标签,CMStop 还支持变量和函数,
strftime('%Y-%m-%d', $r[newstime])可以格式化时间日期,这需要查阅你所用 CMS 的官方标签手册。 - 响应式设计:在写 CSS 时,使用媒体查询(Media Queries)让你的模板能够适配手机、平板等不同设备。
- 安全第一:不要在模板中直接使用用户输入的数据,所有数据输出都应使用系统提供的标签,以防止 XSS 等安全漏洞。
- 官方文档:最重要的一点! 每个版本的 CMStop 都有其独特的标签和函数库,务必找到你所使用的那个版本的官方手册或开发文档,那里有最权威、最全面的标签列表和用法说明。
希望这份详细的教程能帮助你顺利入门 CMStop 模板制作!祝你成功!
