欢迎光临 - 我的站长站,本站所有资源仅供学习与参考,禁止用于商业用途或从事违法行为!

帝国cms教程

帝国CMS7.5一键批量刷新修改教程:后台无需逐个点击刷新

帝国cms教程 我的站长站 2026-09-12 共0人阅读

使用帝国CMS 7.5搭建网站时,在后台修改模板、栏目、信息或者其他页面内容后,经常需要重新刷新相关页面。

帝国CMS后台原本提供了清除临时文件、刷新首页、刷新栏目页、刷新内容页面等功能,但这些操作通常需要站长一个一个点击。如果网站栏目较多、内容量较大,反复操作会比较浪费时间。

如果平时经常需要执行这些刷新任务,可以直接修改帝国CMS 7.5 后台的 ChangeData.php 文件,增加一个批量刷新按钮,让系统自动查找页面上的相关刷新操作,并依次在新窗口中执行。

帝国CMS7.5一键批量刷新修改教程

一、修改帝国CMS 7.5后台文件

首先找到帝国CMS 7.5后台文件:

/e/admin/ReHtml/ChangeData.php

修改之前建议先备份原文件。如果帝国CMS后台目录已经修改过名称,则需要根据自己实际的后台目录找到对应的 ReHtml/ChangeData.php 文件。

二、增加批量刷新按钮

ChangeData.php 合适的位置加入下面的代码,可以增加两个操作按钮。

<input type="button" value="批量全部刷新(新窗口)" onclick="batchOpenEcmsLinks();" style="margin:5px;background:#0066cc;color:#fff;padding:3px 8px;">
<input type="button" value="重置红色标记" onclick="resetMark();" style="margin:5px;background:#666;color:#fff;padding:3px 8px;">

第一个按钮用于执行批量刷新,第二个按钮用于清除页面上的红色执行标记。

三、加入批量刷新JavaScript代码

然后在页面合适的位置加入下面的 JavaScript 代码。

<script>
window.ecmsTaskList = [];

window.onload = function(){
    var selectorArr = [
        'a[href*="ecmscom.php?enews=ClearTmpFileData"]',
        'a[href*="enews=ReUserpageAll"]',
        'a[href*="enews=ReUserlistAll"]',
        'a[href*="enews=ReUserjsAll"]',
        'input[value="刷新所有专题页"]',
        'input[value="刷新首页"]',
        'input[value="刷新所有信息栏目页"]',
        'input[value="刷新所有信息内容页面"]',
        'input[value="批量更新动态页面"]'
    ];

    window.ecmsTaskList = [];

    for(var k=0;k<selectorArr.length;k++){
        var nodeList = document.querySelectorAll(selectorArr[k]);

        for(var m=0;m<nodeList.length;m++){
            var el = nodeList[m];

            var task = {
                el: el,
                href: null,
                onclick: null,
                confirmTip: null
            };

            if(el.tagName.toLowerCase() === 'a'){
                task.href = el.getAttribute('href');

                var onc = el.getAttribute('onclick') || '';
                var cm = onc.match(/confirm\('([^']+)'\)/);

                if(cm){
                    task.confirmTip = cm[1];
                }
            }else if(el.type === 'button'){
                task.onclick = el.getAttribute('onclick') || '';
            }

            window.ecmsTaskList.push(task);
        }
    }
};

function extractUrlFromOnclick(onc){
    if(!onc) return null;

    var pre = '';
    var urlExpr = null;

    var wo = onc.match(
        /window\.open\s*\(\s*([^,]+),\s*['"]\s*['"]/
    );

    if(wo){
        pre = onc.slice(0, onc.indexOf('window.open'));
        urlExpr = wo[1];
    }else{
        var sh = onc.match(
            /self\.location\.href\s*=\s*([^;]+)/
        );

        if(sh){
            pre = onc.slice(0, sh.index);
            urlExpr = sh[1];
        }
    }

    if(!urlExpr) return null;

    try{
        var fn = new Function(
            pre + '\nreturn (' + urlExpr + ');'
        );

        return fn();
    }catch(e){
        return null;
    }
}

function batchOpenEcmsLinks(){
    var taskList = window.ecmsTaskList;

    if(taskList.length === 0){
        alert("未找到目标刷新按钮链接");
        return;
    }

    if(taskList[0].confirmTip){
        if(!confirm(taskList[0].confirmTip)){
            return false;
        }
    }

    for(var i=0;i<taskList.length;i++){
        (function(idx){
            setTimeout(function(){
                var t = taskList[idx];

                var url = t.href
                    ? t.href
                    : extractUrlFromOnclick(t.onclick);

                if(!url) return;

                window.open(url, "_blank", "");

                t.el.style.color = "#ff0000";
                t.el.style.border = "2px solid red";

            }, idx * 600);
        })(i);
    }
}

function resetMark(){
    var list = window.ecmsTaskList;

    for(var i=0;i<list.length;i++){
        var el = list[i].el;

        el.style.color = "";
        el.style.border = "";
    }
}
</script>

四、批量刷新功能支持哪些操作

这段代码会自动搜索当前页面中符合条件的帝国CMS刷新操作,包括以下几类任务:

  • 清除临时文件

  • 刷新用户相关页面

  • 刷新用户列表

  • 刷新用户JS

  • 刷新所有专题页

  • 刷新首页

  • 刷新所有信息栏目页

  • 刷新所有信息内容页面

  • 批量更新动态页面

代码使用 querySelectorAll() 查找页面中的所有匹配元素,而不是只获取第一个按钮。因此,如果后台页面存在多个相同类型的刷新操作,也可以加入任务列表。

五、为什么使用新窗口批量刷新

批量执行时,代码会使用 window.open() 将刷新任务依次打开到新窗口。

不同刷新任务之间设置了 600毫秒 的间隔,可以避免在极短时间内同时触发大量后台刷新请求。

setTimeout(function(){
    var t = taskList[idx];

    var url = t.href
        ? t.href
        : extractUrlFromOnclick(t.onclick);

    if(!url) return;

    window.open(url, "_blank", "");

}, idx * 600);

如果网站数据量比较大,也可以适当增加间隔,例如改成1000毫秒,让每个刷新任务之间间隔1秒。

六、已经执行的任务会自动标红

为了方便查看哪些刷新操作已经被批量执行,代码在打开任务后,会自动给对应按钮增加红色文字和红色边框。

t.el.style.color = "#ff0000";
t.el.style.border = "2px solid red";

这样执行批量刷新后,可以直接从后台页面看到已经处理过的项目,不需要重新判断哪些按钮已经点击。

七、如何恢复原来的按钮样式

如果不需要红色标记,可以点击“重置红色标记”按钮。

对应的 JavaScript 会遍历之前记录的任务,将文字颜色和边框恢复为空:

function resetMark(){
    var list = window.ecmsTaskList;

    for(var i=0;i<list.length;i++){
        var el = list[i];

        el.style.color = "";
        el.style.border = "";
    }
}

八、修改后如何使用

完成文件修改后,重新打开帝国CMS后台对应的数据更新、刷新页面功能页面。

如果代码加载正常,就可以看到新增的“批量全部刷新(新窗口)”按钮。

点击按钮后,程序会自动搜索当前页面中的刷新任务,然后按照页面中找到的顺序依次打开相关刷新链接。

如果页面提示“未找到目标刷新按钮链接”,通常说明当前页面的按钮文字、链接地址或者HTML结构与代码中的选择器不一致,需要根据实际后台HTML结构调整选择器。

九、修改后台文件前需要注意

这个方法直接修改帝国CMS后台核心文件,因此在修改前建议先备份 ChangeData.php

另外,如果以后升级或者覆盖帝国CMS后台文件,修改内容可能会被覆盖,需要重新添加。

由于不同帝国CMS 7.5版本、后台模板以及二次开发程序的HTML结构可能存在差异,代码中的按钮名称和选择器也可能需要根据实际页面进行调整。

总结

对于经常需要更新大量页面的帝国CMS 7.5网站来说,这个小修改可以减少重复操作。通过自动收集后台刷新任务,再以新窗口方式依次执行,可以把原本需要逐个点击的刷新操作集中处理。

同时增加红色标记和重置功能后,也能更直观地查看当前页面中已经执行过的刷新任务。

如果你经常修改帝国cms模板、栏目或者内容页面,这种方式可以作为后台刷新功能的一个简单扩展。