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

cmstop 模板制作教程
(图片来源网络,侵删)

CMStop 模板制作教程:从零开始打造你的网站

前言:理解 CMStop 模板的核心

在学习之前,我们必须明白 CMStop 模板的核心工作原理:

  1. 静态与动态分离:模板本身是静态的 HTML + CSS 文件,它只负责网站的“外观”(即页面布局和样式)。
  2. 标签调用数据:模板中通过特定的“模板标签”(如 <!--list.title-->)来标记需要动态填充内容的位置,这些标签是 CMS 系统识别的“占位符”。
  3. 服务器端渲染:当用户访问网站时,CMS 系统会读取模板文件,将数据库中的内容(如文章、产品、图片)替换掉模板中的标签,最后生成完整的 HTML 页面发送给用户的浏览器。

核心思想: 你先画好一个“空表格”(模板),CMS 系统自动把“数据”(内容)填进去。


准备工作:开发环境

在开始制作模板之前,你需要一个本地服务器环境来测试你的模板,推荐使用集成环境包,一键安装,非常方便。

  • 推荐软件phpStudy (Windows) 或 MAMP (Mac)。
  • 环境要求
    • PHP 版本:建议 7.0 - 7.4 (根据你的 CMS 版本选择)
    • 数据库:MySQL 5.6+
    • Web 服务器:Apache 或 Nginx (以 Apache 为例)

安装步骤

cmstop 模板制作教程
(图片来源网络,侵删)
  1. 下载并安装 phpStudy。
  2. 启动 phpStudy,切换到“Apache”模式。
  3. 进入“www”目录,将你的 CMStoP 程序(例如帝国CMS)解压到该目录下的一个文件夹中,www/empirecms
  4. 在浏览器中访问 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)

首页是网站的“门面”,通常包含网站标志、导航栏、主要内容区(如新闻列表、产品展示)、页脚等。

  1. 创建基础 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>
  2. 理解核心标签

    • [!--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--]:发布时间。
  3. 编写 CSS 样式 在同目录下创建 style.css 文件,为你的 HTML 结构添加样式,实现美观的布局,这部分和普通网页制作完全一样。

第二步:制作列表页模板 (list.html)

列表页用于展示某个栏目下的所有文章,如“新闻中心”、“产品展示”。

  1. 创建 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>
  2. 理解核心标签

    • [!--classname--]:获取当前栏目的名称。
    • $GLOBALS[navclassid]:一个全局变量,代表当前栏目的 ID,在列表页模板中,用它来筛选属于本栏目的文章。
    • [!--show.page--]:自动生成分页导航条。

第三步:制作内容页模板 (show.html)

页用于展示单篇文章的详细内容。

  1. 创建 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>
  2. 理解核心标签

    • [!--title--]
    • [!--newstime--]:发布时间。
    • [!--onclick--]:文章点击数(浏览次数)。
    • [!--newstext--]文章的正文内容,这是最重要的标签。
    • [!--pre.title--][!--next.title--]:上一篇和下一篇的标题。

模板安装与管理

模板制作完成后,你需要把它安装到后台。

  1. 打包模板:将你制作好的模板文件夹(mytemplate,里面包含 index, list, show 等子目录)压缩成一个 .zip 文件。
  2. 登录后台:进入你的网站后台。
  3. 进入模板管理:在左侧菜单中找到 “模板” -> “管理模板”。
  4. 上传安装
    • 选择你刚才制作的模型(如“新闻系统”)。
    • 点击“选择模板文件”,上传你的 mytemplate.zip 文件。
    • 上传成功后,系统会自动解压。
  5. 设置默认模板
    • 在模板管理页面,找到你刚上传的 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 模板制作!祝你成功!