一种Cybertron平台的菜单定制解决方案讲解

开发交流 精帖
收藏
0 689
Sunny912
FoC 未认证 2020-09-03 16:46:18
付费话题:0 积分

项目中,经常会有一些对菜单排列、组合的定制需求。

比如希望把XXXX菜单放到第一位,YYYY菜单放到第二位,。。。此类定制需求,属于入门级定制,你可以:

1. 在项目的分支上,将菜单顺序的配置调整后,重新打包。并在客户处安装。

2. 直接在客户处已安装的系统中,通过界面的菜单管理功能,直接调整菜单的顺序、显隐、组合成菜单组等,并保存。不明白?来看看下面这段视频


除了这样入门级的需求外,还有一些更高(fan)级(ren)的需求。比如希望把“用户”和“操作日志”菜单组合成一个叫“讨厌”的菜单,点击这个菜单后,要像“智能分析”一样,在左侧将“用户”和“操作日志”显示为二级菜单。

面对这样的需求,通常你可能会这样做:声明一个新的叫做“讨厌”的模块,在声明一个对应的菜单,然后给这个菜单定制一个带有二级菜单的页面,最后在通过iframe的方式,将“用户”和“操作日志”页面显示就可以了。

这样做确实达到的客户想要的效果,但是:

1. 定制量大

2. 引入了新的模块,且与“用户”和“操作日志”没有关联,在分配权限时需要特别小心处理

聪明的你,可能还有更好的办法解决:新建一个叫做“讨厌”的菜单组,然后把“用户”和“操作日志”放进去,搞定?菜单组的下拉显示怎么办?如果你够细心会发现,在菜单组上,有一个“collapsible”属性,没错了,只要你把它设置为false,就可以不会再有菜单组的下拉显示了。

那二级菜单怎么办呢?今天之前确实没办法,但是从现在起,只要菜单组的“collapsible”为false,且菜单组的“menus”不为空,那么平台会自动为你添加一个二级菜单。跟客户想的一毛一样!

/uploads/article/20200723/d1ff969673932ac4ae439ab59973e058.png

不信?快来试试吧:不论是要发布的是什么产品,修改对应的make文件settings.gradle,将菜单配置中,原来的:

menu_config = '...,user,operlogs,...'

修改为

menu_config = '...,testgroup1[user,operlogs],...'

重新发布看看效果吧。

需要注意的是:仅开发模式支持“testgroup”这个菜单组呦!

你以为这样就结束了?你太天真了。可能会有更更高(fan)级(ren)的需求等着你:希望把“节点管理”和“范化”组成一个新的“更讨厌”菜单。跟刚才的需求不一样?仔细看看会发现,“范化”模块的页面自带二级菜单,但二级菜单里的项目并对应模块,而是一种展示方式而已。怎么办?稍稍有些复杂,但简而言之,其它配置照旧,只需要多设置一个菜单组的属性

/uploads/article/20200723/d23a8f6a4a820c6265c7de37d04c39bd.png

注意“menuDeocrator”这个属性,需要你自己来定制,并且路径需要与“范化”模块原来的装饰器页面,用来覆盖原来的二级菜单。

为了让你更好理解,我给你准备了样例工程。将附件的custom-brick-custommenu.zip,解压到customized-bricks目录中,将make的settings.gradle的模块和菜单配置修改为

bricks = [ '.*-(...|custommenu)$' ]
menu_config = '...,testgroup2[endpoint,normaliz],...'

重新发布看看效果吧。同理:仅开发模式支持“testgroup2”这个菜单组呦!

/uploads/article/20200723/c8108d1e1c58ea0d6c40a85e56c16a4e.png

满意不?兴奋不?别急着庆祝,这只是开始,远没有很好,比如还不能合并两个都带有二级菜单的模块。如果你有想法、有办法,欢迎推送你的解决方案!


回帖
  • 消灭零回复