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

帝国 CMS 批量刷新全部资讯 filename 字段完整实操教程

时间:2026-08-12 10:42:10  来源:aliz.cn  作者:SKY  阅读:
一、先搞懂底层原理
filename字段存储于各个模型数据表:phome_ecms_news、phome_ecms_down、phome_ecms_article
新建文章时,程序调用ReturnInfoFileName()生成文件名存入数据库;
修改命名函数不会自动改写存量文章数据库字段;
栏目列表页、灵动标签、JS 调用全部读取数据表filename缓存;
后台「更新信息页地址」是官方唯一正规途径,循环执行ReturnInfoFileName批量重算每一条资讯文件名。
你之前遇到「URL 改成小写,但列表链接不变」,本质就是数据表 filename 缓存没有被重新运算。
方案 1:后台可视化批量刷新(首选、最安全,适配自定义 URL 函数)
该方式会读取你修改完成后的e/class/functions.php里面ReturnInfoFileName,逐条运算全新文件名,支持拼音、英文别名、分栏目独立命名、强制小写等二次开发规则。
标准一步一步操作顺序(顺序绝对不能打乱)
确认 functions‑php 已经保存并且上传至服务器
检查你的命名函数末尾强制全部小写,示例:
php
运行
$name = strtolower($name);
return $name.".html";
文件没有上传覆盖,程序依旧运行旧代码,无论多少次刷新都不会生效。
后台 →【系统设置】→【数据更新中心】
点击 更新缓存数据
点开 更新信息页地址
数据表勾选全部你在用的模型(news、下载、图集等)
刷新范围选择「所有记录」
点击开始刷新
系统此时遍历数据表全部资讯,调用自定义函数重写每一行filename字段。
删除栏目缓存文件
缓存路径:e/data/fc/ListEnews.php
后台操作:数据更新中心‑>删除栏目缓存文件
栏目列表的链接全部缓存在此文件,缓存不清理,列表永远展示旧文件名。
依次刷新静态页面
刷新首页
刷新所有信息栏目页
刷新所有信息内容页面
刷新全部 JS 调用信息、自定义列表
清空 CDN、Nginx 缓存、浏览器硬刷新 Ctrl+F5
方案 2:SQL 基础批量改写(适合原生简单命名规则,不适合自定义拼音 / 别名 URL)
仅适合纯 ID、固定前缀这类简单规则;
如果你已经二次开发ReturnInfoFileName,不要直接 SQL 硬改,容易和栏目规则冲突。
sql
--新闻表全部改为 ID.html
UPDATE phome_ecms_news SET filename=CONCAT(id,'.html');

--别名‑id格式
UPDATE phome_ecms_news SET filename=CONCAT(enalias,'-',id,'.html');
执行 SQL 以后依旧需要执行:更新栏目缓存、刷新列表静态页。
方案 3:编写 PHP 脚本强制批量遍历生成(大批量数据专用)
资讯上万条,后台刷新超时,可以新建一个 php 脚本放置网站根目录,运行之后批量重算 filename,适配你的自定义ReturnInfoFileName函数。
新建refresh_filename.php
php
运行
<?php
define('EmpireCMSAdmin','1');
require("e/class/connect.php");
require("e/class/functions.php");

//读取全部文章
$sql="select id,classid,title from {$dbtbpre}ecms_news";
$res=$empire->query($sql);
while($r=$empire->fetch($res)){
    //调用你自定义的文件名生成函数
    $newfile = ReturnInfoFileName('',$r['classid'],$r['id'],$r['title']);
    //强制小写
    $newfile=strtolower($newfile);
    $empire->query("update {$dbtbpre}ecms_news set filename='$newfile' where id='".$r['id']."'");
}
echo "全部filename批量更新完毕";
?>
浏览器访问运行脚本;
运行完毕删除该 php 文件;
清理栏目缓存、刷新静态页面。
多模型就修改数据表名称 ecms_news。
方案 4、模板兜底强制小写(紧急修复列表大写问题)
已经所有操作做完、列表链接依旧残留大写字符;直接在列表模板输出的时候强制转为小写。
普通列表模板
html
预览
<a href="[!--classurl--]/<?=strtolower($bqsr[filename])?>">标题</a>
灵动标签
html
预览
[ecmsinfo]...<a href="{$bqr[classurl]}/<?=strtolower(strtolower($bqr[filename]))?>">{$bqr[title]}</a>[/ecmsinfo]
完整故障排查清单(更新之后 filename 没有变化)
修改好的functions.php没有上传服务器,服务器运行旧版函数;
只刷新了 news 新闻表,下载、图集等其它模型数据表没有更新;
没有删除ListEnews.php栏目列表缓存;
开启灵动标签缓存、碎片缓存,旧链接被标签缓存锁住;
处理:编辑灵动标签,关闭标签缓存;清空后台模板碎片缓存;
CDN 加速缓存了旧的列表 HTML 页面;
ReturnInfoFileName函数缺少strtolower()强制小写代码;
URL 改版之后完整标准化流程(以后修改文件名固定这套流程)
备份数据库 + 备份 static 静态 html 文件夹
修改并且上传 e/class/functions.php 的 ReturnInfoFileName
后台更新缓存数据
执行【更新信息页地址】批量刷新数据表 filename
删除栏目缓存 ListEnews.php
刷新首页、栏目列表页、内容页、JS 调用
配置 Nginx‑301 旧链接跳转
更新 sitemap 站点地图提交搜索引擎
结语
批量更新filename千万不要单纯依靠 SQL 硬编码,尤其是你已经做了拼音 URL、英文别名、分栏目多套命名规则的时候。
帝国 CMS 官方「更新信息页地址」会自动执行你的自定义ReturnInfoFileName,是兼容性最高的方案;大批量资讯则使用自定义 PHP 脚本遍历刷新,最后清理全部缓存、重建静态页面,列表页链接即可全部更新成功。

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

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

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