欢迎访问艾立兹站 Aliz- 专注建站教程与技术分享
您当前的位置:首页 > 建站教程 > 帝国 CMS 教程

帝国CMS扩展变量新增多种字段类型修改方法|支持图片/文件/编辑器/多行文本

时间:2026-08-28 12:48:20  来源:aliz.cn  作者:SKY  阅读:

前言

帝国CMS自带【系统扩展变量】功能非常实用,可用于网站底部信息、联系方式、广告代码、全局配置。但是官方原生存在一个致命短板:所有扩展变量只能输入单行文本
无法实现:
1、无法上传LOGO、banner图片
2、无法放富文本介绍、多行版权信息
3、无法上传附件文件
4、无法使用编辑器排版
本篇教程通过新增数据库字段+修改后台模板+修改保存逻辑+自适应渲染表单,彻底解决该问题,让帝国CMS扩展变量支持 单行文本、多行文本、富文本编辑器、图片上传、文件上传 五种字段类型。
适配版本:帝国CMS7.5、帝国CMS8.0 全版本通用。

一、改造前准备(必做)

1、备份两个核心文件,防止改错无法恢复:
/e/admin/template/AddPubVar.temp.php(变量添加/修改模板)
/e/admin/pubvar.php(变量保存逻辑文件)
2、备份数据库,防止字段新增出错。
3、操作前关闭网站缓存或后续清空全站缓存。

二、第一步:数据库新增字段 formtype

进入phpMyAdmin,执行以下SQL语句,给扩展变量数据表新增字段,用于存储当前变量的字段类型:

 
ALTER TABLE `phome_enewspubvar` ADD `formtype` VARCHAR(20) NOT NULL DEFAULT 'text';
参数说明:默认 text 单行文本,兼容旧变量,旧数据完全不受影响。

三、第二步:修改后台变量模板(增加字段类型选择)

打开文件:/e/admin/template/AddPubVar.temp.php
找到【变量排序】的tr标签,在下方插入【表单类型选择下拉框】代码:

 
<tr> <td height="25">表单类型(*)</td> <td> <select name="formtype"> <option value="text" <?php if($r['formtype']=='text') echo 'selected';?>>单行文本框(text)</option> <option value="textarea" <?php if($r['formtype']=='textarea') echo 'selected';?>>多行文本框(textarea)</option> <option value="editor" <?php if($r['formtype']=='editor') echo 'selected';?>>富文本编辑器(editor)</option> <option value="img" <?php if($r['formtype']=='img') echo 'selected';?>>图片上传(img)</option> <option value="file" <?php if($r['formtype']=='file') echo 'selected';?>>文件上传(file)</option> </select> </td> </tr>
作用:新增/编辑扩展变量时,可自由选择字段类型,自带选中状态。

四、第三步:替换变量值输入区域(自适应五种表单)

继续在 AddPubVar.temp.php 找到原【变量值】输入框,删除原有 input 代码,替换为以下自适应渲染代码:

 
<?php if($r['formtype']=='text'){ ?> <input type="text" name="varvalue" value="<?=$r['varvalue']?>" size="60"> <?php }elseif($r['formtype']=='textarea'){ ?> <textarea name="varvalue" cols="70" rows="8"><?=$r['varvalue']?></textarea> <?php }elseif($r['formtype']=='editor'){ ?> <?=ecms_Editor("varvalue",$r['varvalue'],700,350)?> <?php }elseif($r['formtype']=='img'){ ?> <input name="varvalue" type="text" id="varvalue" value="<?=$r['varvalue']?>" size="52"> <input type="button" value="上传图片" onclick="OpenUpImg('varvalue')"> <?php }elseif($r['formtype']=='file'){ ?> <input name="varvalue" type="text" id="varvalue" value="<?=$r['varvalue']?>" size="52"> <input type="button" value="上传文件" onclick="OpenUpFile('varvalue')"> <?php } ?>
功能说明:
1、text:普通单行文本,适配联系方式、关键词
2、textarea:多行文本,适配简介、备注、版权
3、editor:完整富文本编辑器,支持图文混排
4、img:后台弹窗上传图片,自动返回图片地址
5、file:后台弹窗上传附件,返回文件下载地址

五、第四步:修改保存逻辑,写入字段类型

打开文件:/e/admin/pubvar.php

1、接收表单参数

搜索:$varvalue=$_POST['varvalue'];
在上方添加:

 
$formtype=$_POST['formtype'];

2、修改新增变量SQL语句

找到新增SQL:

 
$empire->query("Insert into {$dbtbpre}enewspubvar(varname,varvalue,myorder,varclassid,vartitle,varinfo,docache) values('$varname','$varvalue','$myorder','$varclassid','$vartitle','$varinfo','$docache')");
替换为:

 
$empire->query("Insert into {$dbtbpre}enewspubvar(varname,varvalue,myorder,varclassid,vartitle,varinfo,docache,formtype) values('$varname','$varvalue','$myorder','$varclassid','$vartitle','$varinfo','$docache','$formtype')");

3、修改编辑变量SQL语句

找到编辑更新SQL,同步增加formtype更新,保证修改类型可保存:

 
$empire->query("update {$dbtbpre}enewspubvar set varvalue='$varvalue',myorder='$myorder',vartitle='$vartitle',varinfo='$varinfo',formtype='$formtype',docache='$docache' where varid='$varid'");
至此,所有源码修改完成。

六、前台模板调用方法(通用)

1、开启缓存调用(推荐,速度快)

<?=$public_r['add_变量名']?>

2、不缓存实时调用(适合经常改动的内容)

&lt;?=ReturnPubVar('变量名')?&gt;

3、不同类型调用示例

图片变量:<img src="<?=$public_r['add_logo']?>" alt="LOGO">
文件变量:<a href="<?=$public_r['add_file']?>">下载文件</a>
编辑器富文本:直接输出即可,自动解析HTML

七、清理缓存、生效步骤

1、后台 → 数据更新中心 → 清空全站缓存
2、更新栏目缓存、模板缓存
3、新增测试变量,分别测试五种类型是否正常保存、渲染

八、常见问题排查

1、没有字段类型下拉框

模板文件未覆盖成功、缓存未清空,清空后台缓存+浏览器缓存。

2、选择类型保存不生效

未执行数据库新增字段SQL,或 pubvar.php 未修改成功。

3、图片/文件上传按钮无反应

后台缺少上传JS函数,帝国CMS原版自带OpenUpImg、OpenUpFile,原版环境不会失效。

4、编辑器空白不显示

缓存未清、页面JS冲突,更新系统缓存即可。

5、旧扩展变量消失/错乱

不会出现,默认formtype为text,完美兼容所有旧数据。

九、进阶拓展(可选)

如需进一步增强,可继续扩展:下拉选择、单选、多选、日期选择、颜色选择字段类型,只需新增case判断、增加前端表单即可,结构完全通用。

结语

通过本次改造,彻底解决了帝国CMS扩展变量功能单一的问题。后台可以自由创建:文本、多行、富文本、图片、文件五种全局变量,极大提升模板灵活性,适合做全站统一LOGO、底部版权、广告位、公告、下载文件等全局配置,是帝国CMS建站必改实用优化方案。
本文为aliz.cn原创教程,可直接转载发布

本文配套模板、静态源码可前往艾立兹素材库alisucai.com下载

发表评论 共有0条评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
公众号二维码

扫码关注公众号
获取全套技术教程