核心概念:Discuz! 模板是什么?
Discuz! 模板就是一系列 HTML 文件、CSS 样式表、JavaScript 脚本以及一些特殊指令(如模板引擎标签)的集合,它定义了论坛在用户浏览器中显示的外观和布局。

(图片来源网络,侵删)
工作原理:
- 前端请求:用户访问论坛的某个页面(如首页、帖子列表)。
- PHP 调用:Discuz! 的后端 PHP 程序接收到请求,确定需要显示哪个模板文件。
- 模板解析:PHP 引擎加载对应的模板文件,并使用 Discuz! 模板引擎(早期版本,现在已简化)来解析文件中的特殊标签(如
{template header})。 - 数据填充:模板引擎将 PHP 程序从数据库中获取的数据(如帖子标题、用户名、内容)填充到模板的相应位置。
- 输出 HTML:一个纯静态的 HTML 页面被生成并发送到用户的浏览器。
关键文件结构: 一个典型的 Discuz! 模板目录结构如下:
/source/plugin/模板名称/ <-- 插件型模板(旧版风格)
或
/template/模板名称/ <-- 主题型模板(新版风格,推荐)
├── index.htm <-- 首页模板
├── forumlist.htm <-- 版块列表页
├── viewthread.htm <-- 帖子内容页
├── portal.htm <-- 门户首页
├── misc.htm --> 其他页面(如登录、注册)
├── common/ <-- 公共模板文件夹
│ ├── header.htm <-- 公共头部
│ ├── footer.htm <-- 公共底部
│ ├── footerjs.htm <-- 公共底部JS
│ └── ...
├── style/ <-- 样式文件夹
│ ├── common.css <-- 公共样式
│ ├── forum.css <-- 版块相关样式
│ └── ...
└── script/ <-- 脚本文件夹
├── common.js <-- 公共JS
└── ...
Discuz! 模板的类型和来源
Discuz! 的模板主要分为以下几种类型:
默认模板
- 介绍:这是 Discuz! 安装时自带的模板,通常命名为
default或tide(新版默认主题)。 - 特点:
- 功能最全面,与所有官方功能完美兼容。
- 代码规范,是学习和二次开发的最佳参考。
- 设计通常比较朴素,以功能为导向。
- 用途:适合作为新站点的启动模板,或作为开发新模板的基础。
官方主题
- 介绍:由 Discuz! 官方团队设计并发布,在官方应用市场可以免费或付费下载。
- 特点:
- 设计精美,紧跟时代潮流。
- 经过官方测试,兼容性和稳定性有保障。
- 通常有专门的支持渠道。
- 用途:希望快速拥有一个专业、美观外观的站长。
第三方模板
- 介绍:由个人开发者或设计团队制作,通过各类 Discuz! 资源网站(如 Discuz! 官方应用市场、模板之家等)发布。
- 特点:
- 风格多样,选择极其丰富,从企业门户到个人博客、游戏社区等应有尽有。
- 质量参差不齐,需要仔细甄别。
- 可能存在与官方插件或其他模板不兼容的问题。
- 部分免费,部分需要付费购买。
- 用途:寻找特定风格,或需要高度定制化外观的站点。
自定义/二次开发模板
- 介绍:站长或开发者基于默认模板或第三方模板进行修改,以满足自身特定需求的模板。
- 特点:
- 独一无二:完全符合站点定位和品牌形象。
- 高度定制:可以修改任何布局、颜色、功能模块。
- 技术要求高:需要具备 HTML, CSS, JavaScript, 甚至 PHP 和模板引擎的知识。
- 用途:品牌论坛、大型门户网站、有特殊功能展示需求的社区。
模板的核心文件详解
理解以下核心文件是掌握 Discuz! 模板定制的关键:

(图片来源网络,侵删)
| 文件名 | 作用说明 |
|---|---|
common/header.htm |
页面头部,包含 <head> 标签(网站标题、关键词、描述、CSS/JS 引入)、顶部导航栏、Logo、用户登录信息等,几乎所有页面都会引用它。 |
common/footer.htm |
页面底部,包含页脚版权信息、统计代码、返回顶部按钮等,几乎所有页面都会引用它。 |
index.htm |
论坛首页,展示版块列表、今日发帖/回帖数、热门帖子、推荐主题等核心信息。 |
forumlist.htm |
版块列表页,与 index.htm 类似,但更侧重于版块的层级展示和版块说明。 |
viewthread.htm |
页,这是论坛最重要的页面,包含帖子标题、楼层内容、作者信息、回复框、投票、附件列表等。 |
forumdisplay.htm |
版块首页,展示特定版块下的所有帖子列表,包含版块规则、置顶帖、普通帖列表等。 |
portal.htm |
门户首页,如果开启了门户功能,此文件定义门户首页的布局,通常包含文章列表、图片轮播、推荐内容等模块。 |
style/common.css |
公共样式表,定义了整个网站的基础样式,如字体、颜色、链接样式、通用布局类(如 .bm, ..ptm)等。 |
style/forum.css |
版块相关样式表,专门用于版块列表、帖子列表、帖子内容等页面的样式。 |
模板中的特殊标签(模板引擎指令)
模板文件不仅仅是 HTML,它还包含 Discuz! 模板引擎识别的特殊标签,用于实现动态内容和页面复用。
模板包含
用于引入其他模板文件,实现代码复用。
{template common/header}:包含公共头部模板common/header.htm。{template common/footer}:包含公共底部模板common/footer.htm。{subtemplate header}:一种更灵活的包含方式,常用于插件中。
变量输出
用于显示 PHP 传递过来的数据。
{$_G[username]}:显示当前登录用户的用户名。{$_G[forum][name]}:显示当前版块的名称。{$_G[setting][sitename]}:显示网站的全局设置名称。
循环
用于遍历数组,如帖子列表、用户列表等。

(图片来源网络,侵删)
{loop $threadlist $thread}
<li>
<a href="forum.php?mod=viewthread&tid={$thread[tid]}">{$thread[subject]}</a>
<span>作者: {$thread[author]}</span>
</li>
{/loop}
$threadlist:PHP 传递过来的帖子数组。$thread:循环中的每一个元素(即一个帖子的数据)。$thread[tid]:获取该帖子的 ID。
条件判断
根据条件显示不同的内容。
{if $_G['uid']}
<!-- 如果用户已登录,显示欢迎信息 -->
<p>欢迎, {$_G[username]}!</p>
{else}
<!-- 如果用户未登录,显示登录表单 -->
<a href="member.php?mod=logging&action=login">登录</a>
{/if}
函数调用
调用 PHP 中定义的函数来处理数据。
{eval echo date('Y-m-d');}:执行 PHP 的echo date('Y-m-d');,显示当前日期。{lang 'plugin_name'}:调用语言包,实现多语言支持。
如何管理和更换模板?
更换模板
- 上传模板:将下载的模板文件夹上传到
/template/目录下。 - 进入后台:登录 Discuz! 后台,进入 “界面” -> “风格管理”。
- 选择风格:在风格列表中,你会看到所有已安装的模板,点击“启用”或“设为默认”即可。
自定义模板(二次开发)
- 复制一份:强烈建议先复制一份
default模板,并重命名(如my_custom),然后在这个副本上进行修改,这样可以保留原始模板作为备份。 - 修改文件:使用代码编辑器(如 VS Code, Sublime Text)打开
/template/my_custom/目录下的.htm和.css文件。 - 修改样式:主要修改
style/目录下的 CSS 文件来改变颜色、字体、布局。 - 修改结构:修改
.htm文件来调整页面元素的顺序和结构。 - 刷新缓存:每次修改模板文件后,都需要在后台 “全局” -> “更新缓存” 中刷新模板缓存,才能看到效果。
最佳实践与注意事项
- 备份!备份!备份!:在进行任何修改前,务必备份原始模板和数据库。
- 从默认模板开始:如果你是新手,最好基于
default模板进行修改,而不是修改一个复杂的第三方模板。 - 善用开发者工具:浏览器的“开发者工具”(F12)是你的好朋友,它可以实时查看页面元素的 HTML 结构和对应的 CSS 样式,帮助你快速定位问题。
- 保持代码整洁:修改时尽量保持代码的缩进和注释,方便日后维护。
- 关注兼容性:修改模板时,要考虑到 Discuz! 未来版本的升级,避免对核心文件进行过度“硬编码”的修改。
- 性能优化:避免在模板中引入过多的外部资源(字体、图标库等),过多的 CSS 和 JS 文件会影响页面加载速度。
Discuz! 的模板系统是一个强大而灵活的工具,它将内容与表现层分离,使得非技术人员也可以通过更换模板来快速改变论坛外观,而技术人员则可以通过深度定制,打造出独一无二的社区平台,理解其工作原理、文件结构和核心标签,是每一位 Discuz! 站长和开发者必备的技能。
