phpcms v9更新缓存后联动菜单无法使用

概述

PHPCMS V9更新缓存后联动菜单无法使用,这是由于更新缓存代码少传递参数(编写有bug)导致。只需将更新缓存cache_api.class.php文件中的linkage方法稍加修改就可解决。

问题描述

PHPCMS更新缓存后,编辑含有联动菜单的文章时,联动菜单无法显示。如果进入【扩展】–> 【联动菜单】,点击当前使用菜单的【更新缓存】,再去编辑内容,就可以正常显示联动菜单。这样的程序是有bug的,操作麻烦还容易出现问题。

PHPCMS更新缓存后联动菜单无法使用

解决方法

通过分析程序,发现顶部的更新缓存调用的联动菜单方法和通过联动菜单栏目使用的方法不一样,顶部更新缓存缺少一个参数,导致更新缓存出现问题。
找到phpcms/modules/admin/classes/cache_api.class.php文件,找到linkage方法,添加红色部分代码,或者将整个方法替换成下边代码:

/**
 * 更新联动菜单缓存方法
 */public function linkage() {
    $infos = $this->db->select(array('keyid'=>0));
    foreach ($infos as $r) {
        $linkageid = intval($r['linkageid']);
        $r = $this->db->get_one(array('linkageid'=>$linkageid),'name,siteid,style,setting');
        $info['title'] = $r['name'];
        $info['style'] = $r['style'];
        $info['setting'] = string2array($r['setting']);
        $info['siteid'] = $r['siteid'];
        $info['data'] = $this->submenulist($linkageid);
        setcache($linkageid, $info,'linkage');
    }
    return true;
}

福利来了

最后给大家分享个福利,由于PHPCMS官方已经不再更新,为了能更好的继续使用PHPCMS,我在Github上持续更新PHPCMS,不仅仅修复了目前存在的漏洞,还增加支持https,PHP7等功能,还提供完整版免费下载。仅限个人学习使用,请勿用于商业用途,如需商业使用,请联系获得授权。


phpcms v9 Github仓库地址:https://github.com/Abel-Lan/phpcms
phpcms v9 最新版本下载地址:https://github.com/Abel-Lan/phpcms/releases

转载请注明:半亩方塘 » phpcms v9更新缓存后联动菜单无法使用