昨天在增加了一个“频道管理员”,并赋予权限栏目之后,登陆后台却只能看到一级和二级目录,无法看到三级目录。
导致产生这个缺陷的原因是dede的后台设置赋予“频道管理员”栏目时,dede并没有将子栏目的管理权限顺延给父栏目。要解决这个问题其实很简单:就是在原有的二级循环上面加个三级循环或者更多估计三级多数也就到头了~~ 首先,你找到dede/目录下的sys_admin_user_edit.php文件,然后查找: //显示用户信息 $randcode = mt_rand(10000,99999); $safecode = substr(md5($cfg_cookie_encode.$randcode),0,24); $typeOpti***** = ''; 。。。。。。 直到include DedeInclude('templets/sys_admin_user_edit.htm'); 然后用以下代码来替换即可; //显示用户信息 $randcode = mt_rand(10000,99999); $safecode = substr(md5($cfg_cookie_encode.$randcode),0,24); $typeOpti***** = ''; $row = $dsql->GetOne("Select * From `#@__admin` where id='$id'"); $typeids = explode(',', $row['typeid']); $dsql->SetQuery("Select id,typename From `#@__arctype` where reid=0 And (ispart=0 Or ispart=1)"); $dsql->Execute('op'); while($nrow = $dsql->GetObject('op')) { $typeOpti***** .= "<option value='{$nrow->id}' class='btype'".(in_array($nrow->id, $typeids) ? ' selected' : '').">{$nrow->typename}</option>\r\n"; $dsql->SetQuery("Select id,typename From #@__arctype where reid={$nrow->id} And (ispart=0 Or ispart=1)"); $dsql->Execute('s'); while($nrow = $dsql->GetObject('s')) { $typeOpti***** .= "<option value='{$nrow->id}' class='stype'".(in_array($nrow->id, $typeids) ? ' selected' : '').">—{$nrow->typename}</option>\r\n"; $dsql->SetQuery("Select id,typename From #@__arctype where reid={$nrow->id} And (ispart=0 Or ispart=1)"); $dsql->Execute('t'); while($nrow = $dsql->GetObject('t')) { $typeOpti***** .= "<option value='{$nrow->id}' class='stype'".(in_array($nrow->id, $typeids) ? ' selected' : '').">─{$nrow->typename}</option>\r\n"; } } } include DedeInclude('templets/sys_admin_user_edit.htm'); 再次:在include/typeunit.class.admin.php中找到: //检测用户有权限的顶级栏目 if($cfg_admin_channel=='array') { $admin_catalog = join(',', $admin_catalogs); 在下面加上选中的第三级栏目的reid。 - 河北id=8 --邢台id=9 ---清河id=10 $admin_catalog .= ','.'9'; |
|