核心原理
帝国CMS默认情况下,为了安全,会禁止在模板文件(.html)中直接执行PHP代码,开启PHP支持的本质是修改系统配置,告诉模板引擎在解析HTML文件时,遇到特定的PHP代码标签就交给PHP引擎去执行。

第一步:开启模板PHP支持(后台设置)
这是最关键的一步,需要在帝国CMS的后台进行设置。
-
登录帝国CMS后台:使用您的管理员账号登录。
-
进入系统设置:
- 在后台左侧菜单中,找到并点击 “系统” 选项。
- 在展开的子菜单中,选择 “系统参数设置”。
-
修改模板参数:
(图片来源网络,侵删)- 在“系统参数设置”页面,点击顶部的 “模板设置” 标签页。
- 在该页面中,找到 “支持程序代码” 这个选项。
- 将其值修改为 “是”。
- 非常重要:在修改后,务必点击页面底部的 “提交” 按钮来保存设置。
-
更新缓存:
- 保存设置后,为了确保新设置生效,建议更新一下系统缓存。
- 在后台首页,通常会有一个 “更新缓存” 的按钮,点击它即可,或者前往 “系统” -> “更新缓存” 手动更新。
完成这一步后,帝国CMS就已经允许在模板中使用PHP代码了。
第二步:在模板文件中编写PHP代码
后台设置开启后,您就可以在模板的 .html 文件中使用PHP了,有几种常见的写法:
使用 <?php ... ?> 标签(最直接)
这是最标准的PHP写法,开启支持后即可使用。

示例:在模板首页显示当前时间
打开您首页的模板文件(通常是 e/data/tpllist/ 目录下的一个 .html 文件),在您想显示时间的地方加入以下代码:
<div class="current-time">
<p>当前服务器时间:<?php echo date('Y-m-d H:i:s'); ?></p>
</div>
使用帝国CMS的 <?php ?> 短标签(推荐)
帝国CMS内置了一些方便的短标签,它们更简洁,且与系统结合更紧密。
示例:使用 <?=$变量?> 输出变量
假设您有一个变量 $navinfor信息),您想在内容页模板中显示标题。
<h1 class="title"><?=$navinfor[title]?></h1>
这行代码等同于 <?php echo $navinfor['title']; ?>,非常方便。
示例:使用 <?php $abc='帝国CMS';?> 定义变量并使用
<?php
$site_name = '我的帝国CMS网站';
$welcome_text = '欢迎来到' . $site_name . '!';
?>
<div class="welcome-box">
<h2><?=$welcome_text?></h2>
</div>
使用 <!--empirenews.list--><!--empirenews.list--> 循环标签中的PHP
当您需要在列表循环中执行复杂逻辑时,可以在列表模板的循环体内使用PHP。
示例:在列表中给奇数条数据添加一个特殊的CSS类
假设您的列表模板文件是 list.var:
<!--empirenews.list--><!--empirenews.list-->
<?
// 使用全局变量 $bqr 来获取当前循环的信息
// 使用 $no 变量来获取当前是第几条(从0开始)
$class = ($no % 2 == 0) ? 'list-item-even' : 'list-item-odd';
?>
<li class="<?=$class?>">
<a href="[!--titleurl--]">[!--title--]</a>
</li>
<!--empirenews.list--><!--empirenews.list-->
第三步:常用变量和函数(实战技巧)
在模板中使用PHP,最常用的是调用帝国CMS的变量和函数,以下是一些最核心的变量:
| 变量名 | 说明 | 适用场景 |
|---|---|---|
$navinfor |
信息数组、ID、分类、内容等所有字段。 | 内容页模板 (show.php 对应的模板) |
$classid |
当前栏目ID (数字)。 | 内容页、列表页、封面页 |
$classname |
当前栏目名称。 | 内容页、列表页、封面页 |
$class_r[$classid] |
当前栏目的信息数组,包含栏目ID、栏目名、上级栏目、链接等。 | 内容页、列表页、封面页 |
$public_r |
系统公共配置数组,包含网站名称、网址、版权信息等。 | 所有页面 |
$bqr |
在列表循环中,代表当前条目的信息数组。 | 列表模板 (list.var) |
$bqno |
在列表循环中,代表当前是第几条记录 (从0开始)。 | 列表模板 (list.var) |
示例:在内容页显示“上一篇”和“下一篇”链接(使用PHP)
页模板 (show.php 对应的模板) 中:
<div class="prev-next">
<?php
// 获取上一篇
$prev = PrevNext('0', $navinfor[classid], $navinfor[id]);
if($prev){
echo '<a href="'.$prev['titleurl'].'">上一篇:'.$prev['title'].'</a>';
}
// 获取下一篇
$next = PrevNext('1', $navinfor[classid], $navinfor[id]);
if($next){
echo '<a href="'.$next['titleurl'].'">下一篇:'.$next['title'].'</a>';
}
?>
</div>
⚠️ 极其重要的安全警告
开启模板PHP支持会大大增加网站被黑客攻击的风险!
-
SQL注入风险:如果直接使用用户提交的数据(如GET、POST参数)来拼接SQL查询,极易被注入。
- 危险代码:
$id = $_GET['id']; $query = "SELECT * FROM phome_ecms_news WHERE id=$id"; - 安全做法:务必使用帝国CMS自带的
eReturnSelect或safe_query等安全函数,或者对变量进行严格的过滤和转义。
- 危险代码:
-
代码执行风险:如果允许用户在前台提交包含PHP代码的内容,用户就可以直接在您的服务器上执行任意代码,这是毁灭性的。绝对不要在用户可以编辑的内容(如评论、留言、投稿)区域开启PHP。
-
文件包含风险:不当的
include或require使用可能导致包含恶意文件。
安全建议:
- 最小权限原则:只在绝对必要的页面开启此功能,不要全局滥用。
- 避免用户输入:尽量不要在模板PHP中直接处理来自用户表单或URL的变量。
- 使用帝国CMS函数:优先使用帝国CMS内置的函数来查询数据库和显示内容,这些函数已经做了一定的安全处理。
- 定期备份:保持网站和数据库的定期备份,以防万一。
- 代码审查:在上线前,仔细检查所有在模板中编写的PHP代码,确保没有安全漏洞。
- 开启:后台 -> 系统参数设置 -> 模板设置 -> “支持程序代码” -> 改为“是” -> 提交并更新缓存。
- 使用:在模板
.html文件中,使用<?php ... ?>或<?=$variable?>等标签编写PHP代码。 - 调用:熟练使用
$navinfor,$class_r,$bqr等核心变量来获取数据。 - 安全:时刻牢记安全风险,谨慎操作,避免滥用。
希望这份详细的指南能帮助您安全地在帝国CMS模板中使用PHP功能!
