1. 云栖社区>
  2. PHP教程>
  3. 正文

PHPCMS不显示无权限栏目对应的左侧菜单

作者:用户 来源:互联网 时间:2017-12-01 20:41:24

权限菜单栏目左侧

PHPCMS不显示无权限栏目对应的左侧菜单 - 摘要: 本文讲的是PHPCMS不显示无权限栏目对应的左侧菜单,PHPCMS可以给某些角色设定权限,比如某些栏目对于某些角色是无法访问的。但是左侧菜单还是会显示该栏目名称,这对编辑来说是不需要的。都访问不了,还显示栏目名称干啥呢。看了一下PHPCMS的代码,简单地实现了隐藏菜单的小功能。从后台页面可以很

PHPCMS可以给某些角色设定权限,比如某些栏目对于某些角色是无法访问的。但是左侧菜单还是会显示该栏目名称,这对编辑来说是不需要的。都访问不了,还显示栏目名称干啥呢。看了一下PHPCMS的代码,简单地实现了隐藏菜单的小功能。

从后台页面可以很简单地分析出,左侧菜单的生成是用Ajax:

$.ajax({type:'get', url:'?mod=phpcms&file=menu&action=get_menu_list&menuid='+id, cache:cache_refresh,dataType:'json', success:function(json){……}}


请求的地址是 http://www.nowamagic.net/admin.php?mod=phpcms&file=menu&action=get_menu_list&menuid=4
在URL参数中,file是指请求的控制器文件,这里menu就是指 admin/menu.inc.php这个文件,action 则是方法。我们找到 menu.inc.php 下的 get_menu_list 方法:

case 'get_menu_list':$data = $m->get_child($menuid);$data = str_charset(CHARSET, 'utf-8', $data);$max = array_slice($data, -1);$data['max'] = $max[0]['menuid'];$data = json_encode($data);if(PHP_OS < 5.0) header('Content-type: text/html; charset=utf-8');echo $data;break;


将其改为:

case 'get_menu_list':$data = $m->get_child($menuid);foreach($data as $k=>$val){if( !empty($data[$k]['keyid']) && substr( $data[$k]['keyid'], 0, 5 ) == 'catid' ){if( $data[$k]['keyid'] == 'catid_0' ){continue;}$catid = str_replace("catid_", "", $data[$k]['keyid']);// 管理权限$allow_manage = $priv_role->check('catid', $catid, 'manage');if(!$allow_manage){unset($data[$k]);}}}$data = str_charset(CHARSET, 'utf-8', $data);$max = array_slice($data, -1);$data['max'] = $max[0]['menuid'];$data = json_encode($data);if(PHP_OS < 5.0) header('Content-type: text/html; charset=utf-8');echo $data;break;


代码存在投机性,但大概思路就是这样。

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索权限 , 菜单 , 栏目 左侧 ,以便于您获取更多的相关知识。