如何在Odoo 17中隐藏CRM模块指定ID的菜单项?
Odoo 17 CRM 隐藏指定菜单项的可行方案
你之前的代码问题在于新建了一个子菜单项,并未修改目标菜单项本身,所以无法达到隐藏效果。以下是两种可行的解决方法:
方法一:设置菜单项为非激活状态(推荐)
通过修改原菜单项的active字段为False,直接对所有用户隐藏该菜单:
<odoo> <data> <record id="crm.res_partner_menu_customer" model="ir.ui.menu"> <field name="active">False</field> </record> </data> </odoo>
说明:
- 必须指定原菜单项的完整ID:
crm.res_partner_menu_customer(因为目标菜单属于crm模块) - 该操作会将菜单标记为非激活,所有用户都无法看到
方法二:清空菜单关联的用户组
通过移除菜单项关联的所有用户组,让没有任何权限的用户(即所有用户)无法访问:
<odoo> <data> <record id="crm.res_partner_menu_customer" model="ir.ui.menu"> <field name="groups_id" eval="[(5, 0, 0)]"/> </record> </data> </odoo>
说明:[(5, 0, 0)]是Odoo的字段更新语法,表示清空当前所有关联的用户组记录。
注意事项
- 确保你的自定义模块在
__manifest__.py的depends列表中添加了crm,保证加载顺序正确 - 升级自定义模块后,刷新页面即可生效
- 若在开发者模式下操作,建议清除浏览器缓存和Odoo缓存后再查看效果
内容的提问来源于stack exchange,提问作者Oscar Vardela
相关产品推荐
相关产品推荐

