phpcms v9栏目三级目录无法访问生成错误的解决办法

发表于2017-03-07 12:41:40来源于创想网页设计工作室

次点击[] [] [] [打印] [关闭窗口] [评论]

欢迎大家加入创想工作室QQ群 网络瘫痪上不了网?电脑出故障?找破解软件?加入创想工作室QQ群,向大神求助,一步解决问题!QQ群号码:326338868[点此获取更多QQ群]
网站栏目结构如图:
 
v9栏目三级目录无法访问生成错误的解决办法
 
文章栏目采用的 业务范围 - 公司注册 - 注册香港公司 这样的目录结构,目录名分别为  业务范围(fuwu)、公司注册(gongsizhuce)、注册香港公司(xianggang),业务范围(fuwu) 和 公司注册(gongsizhuce) 目录都采用生成到根目录,而注册香港公司(xianggang)采用不生成跟目录相对于上级目录 公司注册(gongsizhuce)。
 
没有做修改前v9默认生成的更目录下有 fuwu 和 gongsizhuce 两个文件夹,按照我们的要求 xianggang 应该是在 gongsizhuce 目录下,但是事实是 gongsizhuce 目录下没有 xianggang 文件夹。而查看 fuwu 却发现里面多了一个 gongsizhuce 的文件夹,再打开 gongsizhuce 的目录下会有 xianggang 文件夹。也就是当超过三级采用相对路径时phpcms v9的文件夹存储路径就发生了错误。
 
v9栏目三级目录无法访问生成错误的解决办法
 

解决办法如下

 
查找admin模型下category.php (phpcmsmodulesadmincategory.php)
 
查找get_parentdir函数(约第565行),把
function get_parentdir($catid) {
if($this->categorys[$catid]['parentid']==0) return '';
$r = $this->categorys[$catid];
$setting = string2array($r['setting']);
$url = $r['url'];
$arrparentid = $r['arrparentid'];
unset($r);
if (strpos($url, '://')===false) {
if ($setting['creat_to_html_root']) {
return '';
} else {
$arrparentid = explode(',', $arrparentid);
$arrcatdir = array();
foreach($arrparentid as $id) {
if($id==0) continue;
$arrcatdir[] = $this->categorys[$id]['catdir'];
}
return implode('/', $arrcatdir).'/';
}
} else {
if ($setting['create_to_html_root']) {
if (preg_match('/^((http|https)://)?([^/]+)/i', $url, $matches)) {
$url = $matches[0].'/';
$rs = $this->db->get_one(array('url'=>$url), '`parentdir`,`catid`');
if ($catid == $rs['catid']) return '';
else return $rs['parentdir'];
} else {
return '';
}
} else {
$arrparentid = explode(',', $arrparentid);
$arrcatdir = array();
krsort($arrparentid);
foreach ($arrparentid as $id) {
if ($id==0) continue;
$arrcatdir[] = $this->categorys[$id]['catdir'];
if ($this->categorys[$id]['parentdir'] == '') break;
}
krsort($arrcatdir);
return implode('/', $arrcatdir).'/';
}
}
}
修改为
function get_parentdir($catid) {
                if($this->categorys[$catid]['parentid']==0) return '';
                $r = $this->categorys[$catid];
                $setting = string2array($r['setting']);
                $url = $r['url'];
                $arrparentid = $r['arrparentid'];
                $pid = $r['parentid'];
                unset($r);
                if (strpos($url, '://')===false) {
                        if ($setting['creat_to_html_root']) {
                                return '';
                        } else {
                                $arrparentid = explode(',', $arrparentid);
                                $arrcatdir = array();
                                foreach($arrparentid as $id) {
                        
                                        if($id==0) continue;
                                        $rr = $this->categorys[$id];
                                        $rsetting = string2array($rr['setting']);
                                        if($rsetting['create_to_html_root'] && $id==$pid)
                                        {
                                                return  $this->categorys[$id]['catdir']."/";
                                        }
                                        
                                        else $arrcatdir[] = $this->categorys[$id]['catdir'];
                                
                                }
                                return implode('/', $arrcatdir).'/';
                        }
                } else {
                        if ($setting['create_to_html_root']) {
                                if (preg_match('/^((http|https)://)?([^/]+)/i', $url, $matches)) {
                                        $url = $matches[0].'/';
                                        $rs = $this->db->get_one(array('url'=>$url), '`parentdir`,`catid`');
                                        if ($catid == $rs['catid']) return '';
                                        else return $rs['parentdir'];
                                } else {
                                        return '';
                                }
                        } else {
                                $arrparentid = explode(',', $arrparentid);
                                $arrcatdir = array();
                                krsort($arrparentid);
                                foreach ($arrparentid as $id) {
                                        if ($id==0) continue;
                                        $arrcatdir[] = $this->categorys[$id]['catdir'];
                                        if ($this->categorys[$id]['parentdir'] == '') break;
                                }
                                krsort($arrcatdir);
                                return implode('/', $arrcatdir).'/';
                        }
                }
        }

© copyright 2002-2024, 22BA.COM All Rights Reserved

网站备案号:粤ICP备19114910号

ChuangXiang Design Studio - WebDesign & Internet Marketing

关于我们业务范围联系我们开心一刻网站地图

QQ群一:326338868QQ群二:78712271

QQ群三:193078177

邮箱:news@22ba.com

地址:深圳市福田区金田路现代国际大厦2606