帝国CMS模板制作终极教程

帝国CMS是一款功能强大的国内开源内容管理系统,其模板系统非常灵活,通过标签(函数)调用数据,实现内容的动态展示,本教程将带你一步步从零开始,制作一个完整的帝国CMS模板。

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

第一部分:基础概念与准备

在开始之前,我们必须理解几个核心概念。

核心概念

  • 模板: 网站的“外观”和“骨架”,由HTML、CSS、JavaScript和帝国CMS的标签(函数)组成,它定义了网站的布局和样式。
  • 帝国CMS的“指令”,用于从数据库中调用数据并显示在模板中。[!--class.name--] 用于调用栏目名称。
  • 变量: 标签中的特定部分,用于传递参数。[!--news.url--] 中的 url 就是一个变量。
  • 封面页: 频道(栏目)的主页,通常用于展示该栏目下的列表内容或特定介绍。
  • 列表页: 展示多个内容标题、摘要等信息的页面,通常用于新闻列表、产品列表等。
  • 内容页: 展示单个内容详细信息的页面,如文章详情、产品详情。
  • 公共模板: 可被多个页面调用的模板片段,例如页头、页脚、侧边栏等,这是实现代码复用、提高制作效率的关键。

开发环境准备

  1. 本地服务器: 安装集成环境,如 phpStudyWampServerXAMPP,用于在本地运行帝国CMS。
  2. 代码编辑器: 使用 VS CodeSublime TextDreamweaver 等工具来编写和编辑模板文件。
  3. FTP工具: 如 FileZilla,用于将本地文件上传到服务器。
  4. 浏览器开发者工具: F12 是你最好的朋友,用于调试HTML、CSS和JavaScript,检查网络请求。

第二部分:模板文件结构

一个标准的帝国CMS模板通常包含以下文件和目录:

e/
├─ templates/                 # 模板主目录
│  ├─ default/               # 默认模板文件夹(可以自定义名称)
│  │  ├─ images/             # 存放图片资源
│  │  ├─ style/              # 存放CSS文件
│  │  ├─ js/                 # 存放JavaScript文件
│  │  ├─ public/             # 公共模板目录
│  │  │  ├─ header.html      # 公共页头模板
│  │  │  ├─ footer.html      # 公共页脚模板
│  │  │  └─ ...
│  │  ├─ index.html          # 网站首页模板
│  │  ├─ list-1.html         # ID为1的栏目列表页模板
│  │  ├─ show-1.html         # ID为1的栏目内容页模板
│  │  └─ ...

文件命名规则:

  • 首页: index.html
  • 列表页: list-[栏目ID].html (新闻栏目ID为3,则文件为 list-3.html)
  • 内容页: show-[栏目ID].html (产品栏目ID为5,则文件为 show-5.html)
  • 封面页: index-[栏目ID].html (关于我们栏目ID为7,则文件为 index-7.html)

第三部分:模板制作实战(分步详解)

我们将以制作一个简单的博客首页为例。

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

制作公共模板(页头和页脚)

公共模板能让你的所有页面共享同一套头部和底部,修改时只需更新一个文件。

创建页头模板 (public/header.html)

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">[!--pagetitle--]</title> <!-- 动态获取页面标题 -->
    <meta name="keywords" content="[!--pagekeywords--]"> <!-- 动态获取页面关键词 -->
    <meta name="description" content="[!--pagedescription--]"> <!-- 动态获取页面描述 -->
    <link rel="stylesheet" href="[!--news.url--]templates/default/style/css/style.css"> <!-- 引入CSS -->
</head>
<body>
    <div class="header">
        <div class="logo">
            <a href="[!--news.url--]">[!--site.name--]</a> <!-- 网站名称和首页链接 -->
        </div>
        <nav class="main-nav">
            <ul>
                <!-- 调用一级栏目列表 -->
                [!--empirenews.listtemp--]
                <li><a href="[!--class.url--]">[!--class.name--]</a></li>
                [!--empirenews.listtemp--]
            </ul>
        </nav>
    </div>
    <div class="main-content">

创建页脚模板 (public/footer.html)

    </div> <!-- 关闭 main-content -->
    <div class="footer">
        <p>Copyright &copy; 2025 [!--site.name--] All Rights Reserved.</p>
        <p>Powered by <a href="http://www.phome.net">EmpireCMS</a></p>
    </div>
    <script src="[!--news.url--]templates/default/js/jquery.min.js"></script> <!-- 引入JS -->
</body>
</html>

创建首页 (index.html)

我们将公共模板“组装”起来,并添加首页特有的内容。

[!--temp.public.header--] <!-- 调用公共页头模板 -->
<div class="home-banner">
    <!-- 这里可以放一个轮播图,用JS实现 -->
    <img src="[!--news.url--]templates/default/images/banner.jpg" alt="网站banner">
</div>
<div class="container">
    <div class="main-left">
        <h2>最新文章</h2>
        <!-- 调用新闻列表 -->
        [!--empirenews.listtemp--]
        <article class="post-item">
            <h3><a href="[!--titleurl--]">[!--title--]</a></h3> <!-- 文章标题和链接 -->
            <div class="post-meta">发布时间:[!--newstime--] 作者:[!--writer--]</div> <!-- 发布时间和作者 -->
            <p class="post-excerpt">[!--smalltext--]</p> <!-- -->
        </article>
        [!--empirenews.listtemp--]
        <!-- 分页标签 -->
        <div class="page">
            [!--showpage--]
        </div>
    </div>
    <div class="main-right">
        <!-- 调用公共模板,比如侧边栏 -->
        [!--temp.public.sidebar--]
    </div>
</div>
[!--temp.public.footer--] <!-- 调用公共页脚模板 -->

模板标签解析:

  • [!--temp.public.header--]: 调用 public 目录下的 header.html 模板。
  • [!--news.url--]: 获取网站根目录URL。
  • [!--site.name--]: 获取网站后台设置的网站名称。
  • [!--class.url--] / [!--class.name--]: 调用栏目的URL和名称。
  • [!--empirenews.listtemp--] ... [!--empirenews.listtemp--]: 这是最核心的列表循环标签,所有写在它里面的内容,都会根据后台设置的条件(如栏目、数量、排序等)循环输出。
  • [!--title--]: 调用文章标题。
  • [!--titleurl--]: 调用文章链接。
  • [!--newstime--]: 调用文章发布时间。
  • [!--smalltext--]: 调用文章摘要。
  • [!--showpage--]: 自动生成分页代码。

制作列表页

列表页的制作与首页非常相似,只是调用数据的栏目不同。

假设新闻栏目的ID是 1,那么我们就需要创建 list-1.html 文件。

[!--temp.public.header--]
<div class="container">
    <div class="breadcrumb">
        <a href="[!--news.url--]">首页</a> > [!--classname--] <!-- 当前栏目名称 -->
    </div>
    <div class="main-left">
        <h2>[!--classname--]</h2>
        <!-- 调用指定栏目(ID=1)下的新闻列表 -->
        [!--empirenews.listtemp--]
        <article class="post-item">
            <h3><a href="[!--titleurl--]">[!--title--]</a></h3>
            <div class="post-meta">发布时间:[!--newstime--]</div>
            <p class="post-excerpt">[!--smalltext--]</p>
        </article>
        [!--empirenews.listtemp--]
        <div class="page">
            [!--showpage--]
        </div>
    </div>
    <div class="main-right">
        [!--temp.public.sidebar--]
    </div>
</div>
[!--temp.public.footer--]

关键区别:

  • [!--classname--]: 调用当前栏目的名称。
  • 列表循环标签 [!--empirenews.listtemp--] 在后台绑定栏目时,会自动关联到当前栏目,无需手动指定ID。

页用于展示文章的完整内容。

假设新闻栏目ID是 1页模板为 show-1.html

[!--temp.public.header--]
<div class="container">
    <div class="breadcrumb">
        <a href="[!--news.url--]">首页</a> > <a href="[!--class.url--]">[!--classname--]</a> > [!--title--]
    </div>
    <div class="article-content">
        <h1 class="article-title">[!--title--]</h1>
        <div class="article-info">
            发布时间:[!--newstime--] &nbsp;&nbsp; 作者:[!--writer--] &nbsp;&nbsp; 来源:[!--source--] &nbsp;&nbsp; 点击:[!--onclick--]
        </div>
        <div class="article-text">
            [!--newstext--] <!-- 这是调用文章正文内容的核心标签 -->
        </div>
        <!-- 上一篇/下一篇 -->
        <div class="nav-next-prev">
            <div>上一篇:[!--info.pre--]</div>
            <div>下一篇:[!--info.next--]</div>
        </div>
        <!-- 相关文章 -->
        <div class="related-news">
            <h3>相关文章</h3>
            [!--empirenews.listtemp--]
            <li><a href="[!--titleurl--]">[!--title--]</a></li>
            [!--empirenews.listtemp--]
        </div>
    </div>
</div>
[!--temp.public.footer--]

关键标签:

  • [!--newstext--]: 调用文章正文的核心标签
  • [!--info.pre--] / [!--info.next--]: 调用上一篇/下一篇文章的标题和链接。
  • [!--onclick--]: 调用文章点击数。

第四部分:常用标签速查表

类别 说明
基础信息 [!--news.url--] 网站地址
[!--site.name--] 网站名称
[!--pagetitle--] 当前页面标题
[!--pagekeywords--] 当前页面关键词
[!--pagedescription--] 当前页面描述
栏目信息 [!--class.name--] 栏目名称
[!--class.url--] 栏目链接
[!--classname--] 当前栏目名称
列表/首页 [!--empirenews.listtemp--] 列表循环开始
[!--title--]
[!--titleurl--] 标题链接
[!--smalltext--] 摘要
[--newstime--] 发布时间
[--writer--] 作者
[--showpage--] 分页
[!--info.pre--] 上一篇
[!--info.next--] 下一篇
[!--onclick--] 点击数

第五部分:进阶技巧与最佳实践

  1. 模板缓存: 帝国CMS默认开启模板缓存,修改模板后需要在后台“更新缓存”才能看到效果。
  2. 使用[!--temp.pl--]调用公共模板: [!--temp.public.header--] 是简写,plpublic 的缩写,你也可以直接写 [!--temp.公共模板名--]
  3. 灵动标签: 除了列表标签,帝国CMS还有更强大的“灵动标签”,可以实现更复杂的数据查询和循环,是进阶必备技能。
  4. 响应式设计: 在编写CSS时,使用媒体查询(@media)让你的模板在不同设备(PC、平板、手机)上都有良好的显示效果。
  5. SEO优化:
    • 合理设置每个页面的 title, keywords, description
    • 使用面包屑导航 [!--class.nav--]
    • 为图片添加 alt 属性。
  6. 代码规范: 保持HTML、CSS、JavaScript的代码整洁和注释清晰,方便后期维护。

第六部分:资源与学习

  • 官方手册: 帝国CMS自带的官方模板制作手册是最权威的资料,请务必仔细阅读。
  • 视频教程: 在B站、腾讯课堂等平台搜索“帝国CMS模板教程”,有大量视频资源可供学习。
  • 模板市场: 购买现成的模板进行学习和二次开发,是快速上手的好方法。
  • 交流社区: 加入帝国CMS的官方QQ群或论坛,遇到问题可以及时求助。

制作帝国CMS模板的核心思想是 “HTML骨架 + 帝国标签填充”,从制作公共模板开始,然后逐步构建首页、列表页和内容页,熟练掌握常用标签,你就能游刃有余地打造出任何你想要的网站样式,祝你学习顺利!