有的時候,咱們的菜單不少很雜,想要把菜單進行分組以方便管理,以下html
前一篇博文已經詳細講解了如何菜單自定義排序,自定義分組和排序其實寫法相似:app
要實現上面這個功能,分爲如下幾步:插件
一、 咱們須要定義一個變量用來肯定當前app屬於哪一個組,因此在每一個app所屬的apps.py中加一個變量 menu_name = "分組名" 以下:3d
二、咱們知道,xadmin中CommAdminView是用戶已經登陸後顯示的View,也是全部登錄後View的基礎類。htm
該View主要做用是建立了Xadmin的通用元素,例如:系統菜單,用戶信息等。插件能夠經過註冊該View來修改這些信息。blog
因此咱們能夠自頂一個一個類,裏面重寫 get_nav_menu 方法,加入咱們自定義的變量menu_cate,用於在html中分組使用排序
而後將咱們自定義的類註冊到xadmin中,xadmin.site.register(views.CommAdminView, 自定義類名)繼承
三、修改htmlget
查看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和咱們分組的名稱相等,即歸爲一個組,其餘組亦然。