九、xadmin菜单分组管理
有的时候,我们的菜单很多很杂,想要把菜单进行分组以方便管理,如下

前一篇博文已经详细讲解了如何菜单自定义排序,自定义分组和排序其实写法类似:
要实现上面这个功能,分为以下几步:
1、 我们需要定义一个变量用来确定当前app属于哪个组,所以在每个app所属的apps.py中加一个变量 menu_name = "分组名" 如下:

2、我们知道,xadmin中CommAdminView是用户已经登录后显示的View,也是所有登陆后View的基础类。
该View主要作用是创建了Xadmin的通用元素,例如:系统菜单,用户信息等。插件可以通过注册该View来修改这些信息。
所以我们可以自顶一个一个类,里面重写 get_nav_menu 方法,加入我们自定义的变量menu_cate,用于在html中分组使用

然后将我们自定义的类注册到xadmin中,xadmin.site.register(views.CommAdminView, 自定义类名)
3、修改html
查看CommAdminView源码,我们还可以看到,它的基础模板是base_site.html, 同时还指明menu_template = 'xadmin/includes/sitemenu_default.html'
在base_site.html中,有个div是用来承载左侧菜单栏的:

它里面引用了menu_template,所以我们直接重写sitemenu_default.html即可,下面先写了三个div容器,分别用于承载三个分组,里面的内容由它的继承者 sitemenu_accordion.html来加入。

然后在sitemenu_default.html的继承者sitemenu_accordion.html中分别编写我们自己定义的block: navbar_md、navbar_md_forum 和 navbar_md_wechat
下面以navbar_md为例,代码如下:
循环所有的菜单,如果当前菜单的menu_cate和我们分组的名称相等,即归为一个组,其他组亦然。

九、xadmin菜单分组管理的更多相关文章
- C#开发微信门户及应用(6)--微信门户菜单的管理操作
前面几篇继续了我自己对于C#开发微信门户及应用的技术探索和相关的经验总结,继续探索微信API并分享相关的技术,一方面是为了和大家对这方面进行互动沟通,另一方面也是专心做好微信应用的底层技术开发,把基础 ...
- C#-MVC开发微信应用(4)--微信门户菜单的管理操作
最近对微信接口进行深入的研究,通过把底层接口一步步进行封装后,逐步升级到自动化配置.自动化应答,以及后台处理界面的优化和完善上,力求搭建一个较为完善.适用的微信门户应用管理系统. 在微信门户系统里面, ...
- atitit。wondows 右键菜单的管理与位置存储
atitit.wondows 右键菜单的管理与位置存储 原理 .这样的功能称为Windows外壳扩展(Shell Extensions) 1 常用右键菜单 atiContentMenu1 通用tool ...
- 基于吉日嘎底层架构的Web端权限管理操作演示-菜单模块管理
按照顺序,这一篇介绍菜单模块管理,主要演示如下操作: 新增.修改.锁定.解锁.删除.撤销删除 排序 角色成员管理 用户成员管理 导出菜单模块数据 也许你会问,你在这自吹自擂,你这个BS的权限管理有啥缺 ...
- RDIFramework.NET ━ 9.6 模块(菜单)管理 ━ Web部分
RDIFramework.NET ━ .NET快速信息化系统开发框架 9.6 模块(菜单)管理 -Web部分 模块(菜单)管理是整个框架的核心,主要面向系统管理人员与开发人员,对普通用户建议不要授 ...
- paip.快捷方式分组管理最佳实践ObjectDock
paip.快捷方式分组管理最佳实践ObjectDock /////挑选:除了od,还有个Berokyo ,但是bk无crash..只能使用1月.. Jumplist_Launcher_v7.2_rep ...
- asp.net微信开发第五篇----用户分组管理
上一篇已讲解到新建用户分组,移动用户到分组的功能,这一章主要讲解修改分组名称和删除分组 开发者可以使用接口,对公众平台的分组进行查询.创建.修改.删除等操作,也可以使用接口在需要时移动用户到某个分组. ...
- Eclipse项目分组管理
对于eclipse相信对于一个java开发人员,一定不陌生.eclipse可以通过工作空间(Workspace)将不同的项目进行分开管理,相信这一点大家一定很熟悉,用过idea的小伙伴,一定发现了,i ...
- java—不同的用户登录以后可以看到不同的菜单(后台可以实现对用户菜单的管理) 1 (55)
实现不同的用户登录以后可以看到不同的菜单.(后台可以实现对用户菜单的管理.) 第一步:分析数据结构 1:用户表 表名:users 列名 类型 说明 id Varchar(32) 主键 n ...
随机推荐
- java.lang.NumberFormatException: Infinite or NaN
1.异常提示: java.lang.NumberFormatException: Infinite or NaN 2.原因:无法格式化的数字,此数字要么不是个数字,要么是无穷大的数字,从而导致 B ...
- Python: 遍历
======================遍历列表========================# 直接遍历list: for elem in list: pass # 通过索引获取 for i ...
- jQuery设置元素的readonly和disabled属性
jQuery的api中提供了对元素应用disabled和readonly属性的方法,如下: 1.readonly $('input').attr("readonly",&qu ...
- css图片热点链接的设置
一.热点的原理 图片通过usemap="#Map"属性将名称为"Map"的热点区域及连接映射到图片上. 一般来说,图片的usermap属性对应的是map热点的n ...
- centos7下安装docker(21docker swarm集群创建)
创建swarm集群: 实验环境:盗图 swarm-manager是manager node,swarm-worker1和swarm-worker2是worker node. 所有节点的docker版本 ...
- centos7下安装docker(18docker日志---docker logs)
在微服务架构中,由于容器的数量众多以及快速变化的特性使得记录日志和监控变得越来越重要,考虑到容器的短暂和不固定周期,当我们需要排查问题的时候容器可能不在了.因此,一套集中式的日志管理系统是生产环境中不 ...
- centos7下安装docker(15.8docker跨主机容器通信总结)
性能:underlay网络的性能优于overlay.Overlay网络利用隧道技术,将数据包封装到UDP中进行传输,由于涉及数据包的封装和解封,存在额外的CPU和网络的开销,虽然几乎所有overlay ...
- windows 增加右键功能 -->用命令行打开
windows 增加右键功能 -->用命令行打开 实现 注册表 以管理员权限CMD 到指定文件夹 Windows Registry Editor Version 5.00 [HKEY_CLASS ...
- 转://SQLNET.EXPIRE_TIME参数
DCD: Dead Connection Detection ,可以用于检测.标记僵死而没有断开会session,再由PMON进行清理,释放资源.开启DCD,只需要在服务端的sqlnet.ora文件中 ...
- 7-EL表达式和JSTL表达式
引入jar包 一.EL表达式1.表达式语言,用于jsp网页中获取和计算数据2.语法:${表达式}3.用于取值:可以从pageContext,request,session,application这些域 ...