网上那些讲帝国CMS模板标签的教程,要么是官方文档的复读机,要么是照着抄代码还抄不明白的“半桶水”,你摸着良心问自己——你缺的是标签列表吗?不,你缺的是“拿到一个空模板,知道该往哪儿填标签”的胆量,这篇文不搞虚的,直接拿一个企业官网首页的完整搭建流程开刀,让你跟着操作就能把站搭出来,适用人群:会用后台发文章、看得懂HTML标签、但一打开模板文件就头皮发麻的站长,如果你连目录结构都整不明白,那也先别走,硬着头皮跟着来一遍,比你看十篇教程都管用。
第一步:把帝国CMS装得明明白白
别急着碰标签,你先得有个能跑起来的帝国CMS,下载源码后,把根目录文件传到服务器或本地环境,访问 域名/install,按提示填数据库信息,这里必须提醒你:安装时“数据库前缀”千万别改,默认 phome_ 就老实留着,为什么?因为后面很多模板标签里写的表名都是基于这个前缀的,你手贱改了前缀,等会儿调用标签全报错,哭都来不及,装好后后台地址是 域名/e/admin,默认账号密码是 admin 和 admin888,进去第一件事,改密码。

帝国CMS模板标签实战指南,三小时搞定企业站模板
第二步:认清模板标签的“五脏六腑”
帝国CMS的模板标签,本质就是一段带有特定函数和参数的代码,放在模板文件里,后台解析后输出动态内容,核心竞争力在于它的灵动标签([!–empirenews.listtemp–]这种,别纠结写法,后面有详解)和列表模板,新手最容易搞混的是两类:
- 全局标签:全站通用的,比如顶部导航、底部版权,放在“模板管理→公共模板变量”里。
- 局部标签:只作用于当前页面,写在页面模板内容里。
你现在打开后台的“模板管理→标签模板”,会看见系统自带了一堆,先别删,我们直接从零白手起家,用最原始的方式写一个首页模板。
第三步:手把手搭一个企业官网首页
打开你的站点根目录,找到 e/data/template/ 下的文件夹(如果你没改过模板目录,默认在 template/你的模板名/ 里),新建一个 index.html 文件,把下面这段基础代码粘进去,这就是你的首页模板。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">首页</title>
<link rel="stylesheet" href="[!–news.url–]e/data/css/style.css">
</head>
<body>
<!-- 顶部栏:调用“栏目名称”列表 -->
<div class="header">
<ul>
[e:loop={"select classid,classname from [!db.pre!]enewsclass where bclassid=0 order by myorder",0,24,0}]
<li><a href="[!–news.url–]e/action/ShowInfo.php?classid=<?=$bqr[classid]?>&id=1"><?=$bqr[classname]?></a></li>
[/e:loop]
</ul>
</div>
<!-- 头条区:调用最新一条新闻 -->
<div class="main-news">
[e:loop={"select * from [!db.pre!]ecms_news where checked=1 order by newstime desc limit 1",1,24,0}]
<h2><a href="<?=sys_ReturnBqTitleLink($bqr)?>" target="_blank"><?=$bqr[title]?></a></h2>
<span>时间:<?=date('Y-m-d',$bqr[newstime])?></span>
<p><?=mb_substr(strip_tags($bqr[newstext]),0,200,'utf-8')?>...</p>
[/e:loop]
</div>
<!-- 列表区:调用最新5条新闻 -->
<div class="news-list">
<ul>
[e:loop={"select * from [!db.pre!]ecms_news where checked=1 order by newstime desc limit 5",5,24,0}]
<li>
<span><?=date('Y-m-d',$bqr[newstime])?></span>
<a href="<?=sys_ReturnBqTitleLink($bqr)?>" target="_blank"><?=$bqr[title]?></a>
</li>
[/e:loop]
</ul>
</div>
<!-- 底部 -->
<div class="footer">© 2025 [!–news.url–]</div>
</body>
</html>
保存后,后台“模板管理→模板组管理”里,把默认模板组的“首页模板”改成你新建的 index.html,然后去“系统→系统设置→网站首页”把首页显示方式改为“使用模板文件”。 刷新前台,你已经能看到页面了——虽然丑,但数据是真的。
第四步:配置要点,别让标签“裸奔”
看到上面的代码了吧?关键配置有三个:
-
[!db.pre!]是必须的,这个变量会被解析成你安装时填写的数据库前缀(默认phome_),千万别在SQL里写死phome_,否则换数据库或迁移就废了,所有标签里涉及表名的,一律用[!db.pre!]拼。 -
[e:loop]的三个参数别填错,格式是[e:loop={sql语句, 显示条数, 操作类型, 是否缓存}],第一个是SQL;第二个是条数,你想显示5条就填5;第三个是类型,一般填24(表示列表)或0(表示任意模型);第四个填0(不缓存)或1(缓存),新手建议全填0,等熟练了再开缓存。 -
<?=$bqr[字段名]?>是取数据的写法。$bqr是帝国CMS循环时自动生成的数组,里面存放了当前这条记录的各个字段,如果你在SQL里select *,那么新闻的标题、内容、时间、所属栏目ID全在$bqr里取,但注意:如果字段名不存在,它不会报错,只会输出空字符串——所以字段拼错是“静默失败”,你排查到怀疑人生也查不出来。
第五步:常见踩坑,提前给你垫个底
-
坑1:标签没生效,原样输出在页面上。 多半是模板文件没被后台解析,检查系统设置里的“首页显示方式”是不是“使用模板文件”,而且模板文件路径是否在当前的模板组目录下,最蠢的是你把
index.html放到了别的模板文件夹里,后台选的却是另一套模板。 -
坑2:时间显示成
1970-01-01。 因为你拿到的newstime字段是Unix时间戳,必须用date('Y-m-d', $bqr[newstime])格式化,直接输出数字,就会变成1970,同理,很多字段从数据库取出来都是“原始格式”,别指望它自动好看。 -
坑3:SQL里用了
limit但只显示一条。 帝国CMS的[e:loop]的第二个参数“显示条数”是硬限制,你SQL里limit 10,但循环参数写1,最终只会显示1条,反过来,你SQL里limit 1,循环参数写10,虽然循环10次,但数据后面全是空,所以记住:SQL控制取哪些数据,循环参数控制显示几条,两者取交集。 -
坑4:循环变量
$bqr在循环外还能用。 这是帝国CMS的“特性”,循环结束后$bqr还保留最后一条记录的值,如果你在循环后面写<?=$bqr[title]?>,会输出最后一条新闻的标题,别惊讶,也别依赖这个行为,该重新查询就重新查询。 -
坑5:模板标签里的双引号、单引号被转义。 如果你把模板文件保存为UTF-8带BOM,或者某个编辑器自动把中文引号替换了,后台解析时就会出错,建议所有模板文件用UTF-8无BOM格式保存,并且SQL语句里一律用单引号包围字符串,外层用双引号(就像我的示例),如果你非要SQL里用双引号,就要对内部引号加反斜杠,烦死你。
给你一个“能跑就谢天谢地”的优化方向
上面这套流程,能让你在三小时左右把首页和文章列表跑通,但真要做成企业站,你还需要:在后台“栏目管理”里每个栏目新建“列表模板”和“内容模板”,然后把首页里的“头条区”改成调用指定栏目ID的内容,给导航栏加个当前栏目高亮(用 $GLOBALS[navclassid] 判断),这些都是后话,今天你先把这个骨架搭起来,帝国CMS模板标签不神秘,它就是PHP函数包装成模板语法,你对着官方函数手册查 sys_ReturnBqTitleLink、sys_ReturnBqClassLink,比谁的教程都靠谱。
别停,现在就去改一个你自己的 index.html,标签写错没关系,刷新页面看报错——帝国CMS的报错挺直白的,至少比那些“500错误”要人性化,要是真遇到白屏,把 e/config/config.php 里的错误报告打开(把 display_errors 设为 1),你会看到它明确告诉你哪行代码缺了括号,干完这票,你就不是新手了。
发表评论