九、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 ...
随机推荐
- [20190401]那个更快的疑问.txt
[20190401]那个更快的疑问.txt --//前一阵子,做了11g于10g下,单表单条记录唯一索引扫描的测试,摘要如下:--//参考链接:http://blog.itpub.net/267265 ...
- ueditor在线编辑器的简单使用-上传图片
由于我的项目个人博客网站需要用到在线编辑器,百度的ueditor编辑器就是一个很好的编辑器.开始比较迷茫的使用,各种百度,没有我满意的答案,明明可以很简单的使用. 1.首先进入ueditor官网下载, ...
- SQL SERVER 查询表的行数
SELECT OBJECT_NAME(ii.id) TableName ,rows FROM sysindexes ii INNER JOIN sysobjects oo ON ( oo.id = i ...
- element ui Angular学习笔记(一)
1.element ui安装 npm i --save element-angular 2.Angular-cli引入 引入后需要开启ElModule.forRoot(),也可以单独引入某个组件入El ...
- 【JXOI2018】守卫
[JXOI2018]守卫 参考题解:https://blog.csdn.net/dofypxy/article/details/80196942 大致思路就是:区间DP.对于\([l,r]\)的答案, ...
- CentOS7下使用YUM安装MySQL5.6
(1)检查系统中是否已安装 MySQL. rpm -qa | grep mysql 返回空值的话,就说明没有安装 MySQL . 注意:在新版本的CentOS7中,默认的数据库已更新为了Mariadb ...
- SQL Server 数据导入Mysql具体教程
SQLServer2005数据导入Mysql到具体教程(測试) SQL SERVER数据导入MYSQL文件夹 1.Navicat for MySQL 版本号10.0.9 2.创建目标数据库 3.创 ...
- Get https://192.168.2.119/v2/: dial tcp 192.168.2.119:443: getsockopt: connection refused
Get https://192.168.2.119/v2/: dial tcp 192.168.2.119:443: getsockopt: connection refused
- java中的闭包
闭包(Closure)是一种能被调用的对象,它保存了创建它的作用域的信息 public class Programmer { private String name; public Programme ...
- 【vue】vue +element 搭建项目,el-input 常用的验证
1.el-input 常用布局 <el-input class="filter-item dialog-search" size="small" @key ...