九、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和我们分组的名称相等,即归为一个组,其他组亦然。

 

posted @ 2018-09-15 15:09  陌上花开缓缓归!  阅读(2542)  评论(2编辑  收藏  举报
Top ↑