Odoo 菜单定义和修改学习总结

简介: Odoo 菜单定义和修改学习总结

odoo菜单定义和修改学习总结

环境

odoo-14.0.post20221212.tar

定义菜单

方式1:

<?xml version="1.0"?>
<odoo>
    <menuitem id="root_menu_id" name="TopMenu" web_icon="estate,static/img/icon.png">
        <menuitem id="second_level_menu" name="SecondLevelMenu">
            <menuitem id="third_level_menu1" action="third_level_menu1_action" sequence ="10"/>
            <menuitem id="third_level_menu2" action="third_level_menu2_action" sequence ="20"/>
        </menuitem>
    </menuitem>
</odoo>

说明:

  • id 菜单外部ID
  • name如果不指定name,则:
  • 如果为菜单设置了action,则获取action record定义中name字段的值作为菜单name属性的值
  • 如果未设置菜单action,则获取菜单外部ID为值作为菜单name属性的值
  • action
    打开菜单时需要执行的action的外部ID
  • web_icon
    指定菜单图标,格式:模块名称,图标路径,形如estate,static/img/icon.png 意为estate模块下的static/img/icon.png图标。其中图标路径,一般是相对于模块根目录的相对路径
  • sequence
    设置菜单展示顺序。该属性值越大,越靠右、靠下方展示。也就是说,菜单从左往右,从上到下,对应sequence属性值从小到大。
  • <menuitem>元素也可以放在<data>元素中,形如
<?xml version="1.0"?>
<odoo>
    <data>
        <menuitem id="root_menu_id" name="TopMenu" web_icon="estate,static/img/icon.png">
        ...
        </menuitem>
    </data>
</odoo>
  • groups
    逗号分隔的res.groups模型的外部ID序列,形如groups="group_account_user,group_account_manager,group_account_invoice",表示菜单只能被group_account_user,group_account_manager,group_account_invoice 三个用户组访问。用于指定可以访问菜单的用户组。如果外部ID以-为前缀,则从菜单组中移除该ID代表的组,注意,如果指定用户组不是在当前模块中定义的,需要指定所在模块名称,形如estate.group_estate_property_root_menu
    示例:
<?xml version="1.0"?>
<odoo>
    <data>
        <menuitem id="root_menu_id" name="TopMenu" web_icon="estate,static/img/icon.png" groups="group_estate_property_root_menu">
        ...
        </menuitem>
    </data>
</odoo>

方式2:通过parent来设置菜单层级

<?xml version="1.0"?>
<odoo>
    <menuitem id="root_menu_id" name="TopMenu" web_icon="estate,static/img/icon.png"/>
    <menuitem id="second_level_menu" name="SecondLevelMenu" parent="root_menu_id"/>
    <menuitem id="third_level_menu1" action="third_level_menu1_action" sequence ="10" parent="second_level_menu"/>
    <menuitem id="third_level_menu2" action="third_level_menu2_action" sequence ="20" parent="second_level_menu"/>
</odoo>

说明:

  • parent

指定父级菜单外部ID,如果上级菜单不在当前模块中,则需要指定上级菜单所在模块,形如parent="moduleName.parent_menu_id"

修改菜单

本节要介绍的是一种特殊的修改方式,并不是直接修改原有菜单定义。这种修改方式之所以特殊,是因为它不修改原有菜单的定义,而是通过重新定义菜单来修改,可以简单的类比为“继承”,具体做法如下:

  1. 定义一个新的菜单<menuitem>,将其id属性值设置为原有菜单所在模块名称及其id属性值的组合,形如:moduleName.source_menu_id(参见下述示例),如果新的菜单和原有菜单在同一个模块,可以省略moduleName.
  2. 修改相关菜单属性值为目标值(如果需要的话)
    示例:重新定义purchase.menu_purchase_root菜单名称
<menuitem id="purchase.menu_purchase_root" name="omsPurchase"/>
  1. 以新定义的菜单为父级菜单,添加子菜单(如果需要的话),添加方式可以参考上文所述,需要注意的是,不管采用哪种方式,原有菜单的子菜单依然存在,并显示为新定义菜单的子菜单
  2. 隐藏原有菜单的子菜单(如果需要的话)
    定义一个<record>,将其id设置为要隐藏的子菜单所在模块名称及id属性值的组合,形如:moduleName.source_menu_id,如果新的菜单和原有菜单在同一个模块,可以省略moduleName.
    将其model设置为"ir.ui.menu"
    添加子元素 <field name="active" eval="False"></field>,其中eval=False则表示隐藏,eval=True表示显示
<?xml version="1.0"?>
<odoo>
    ...
    <record id="purchase.sub_menu_purchase" model="ir.ui.menu">
        <field name="active" eval="False"></field>
    </record>
</odoo>

参考连接

https://www.odoo.com/documentation/14.0/zh_CN/developer/reference/addons/data.html#shortcuts

目录
相关文章
|
Linux Shell
linux 下安装minio并配置
现在我们去服务器,我们启动时指定的目录去看看,文件桶相当于文件目录,这里没有使用纠删码的模式,所以直接就是源文件了。当我们线上运行的项目已经有源文件了,在使用minio的时候,可以直接指定该目录为minio的文件目录就行了。
|
人工智能 物联网 Android开发
【04】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-自定义一个设置输入小部件组件-完成所有设置setting相关的页面-优雅草卓伊凡
【04】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-自定义一个设置输入小部件组件-完成所有设置setting相关的页面-优雅草卓伊凡
546 92
|
7月前
|
存储 JavaScript Java
2025版基于springboot的企业考勤管理系统
本系统基于Spring Boot、Vue与MySQL,实现企业考勤自动化管理,集成生物识别与GPS定位,支持多端操作与数据可视化,提升考勤准确性与管理效率,助力企业数字化转型。(239字)
|
12月前
|
关系型数据库 Linux 数据库
2025 年 Odoo 安装与部署全攻略
本文介绍了 Odoo 的手工安装与自动化部署方案。手工安装需完成 Docker 安装、镜像拉取及容器运行,但存在安装复杂、配置困难、管理繁琐等问题。Websoft9 提供了自动化部署方案,通过控制台实现快速创建数据库、初始化环境和后台配置,大幅降低技术门槛,将部署时间从 2 小时缩短至 10 分钟。对比显示,Websoft9 在时间成本、技术要求和稳定性上更具优势,适合中小团队使用,助力企业聚焦业务流程优化。
2113 1
|
人工智能 算法 程序员
程序员如何借势AI提高自己:从高效工作到技能升级的全面指南
【11月更文挑战第4天】程序员可以通过以下几个方面借势 AI 提升自己:1. 日常工作效率提升,包括智能代码编写与补全、自动化测试与调试、项目管理与协作;2. 技能学习与升级,涵盖基础知识学习和深入技术研究;3. 思维拓展与创新能力培养,激发创意灵感和培养批判性思维。
1272 1
|
网络协议 应用服务中间件 网络安全
odoo17在线聊天报错提示 Couldn‘t bind the websocket...
当 Odoo 17 报错 "Couldn't bind the websocket..." 时,通过检查和配置 WebSocket 端口、防火墙规则、代理服务器以及 Odoo 配置文件,可以有效解决此问题。确保每一步操作准确无误,最终重启相关服务,使配置生效。希望这些步骤能帮助您快速恢复 Odoo 的在线聊天功能。
552 1
|
JSON 监控 数据格式
Grafana导入 json 文件的 dashboard 错误 Templating Failed to upgrade legacy queries Datasource xxx not found
Grafana导入 json 文件的 dashboard 错误 Templating Failed to upgrade legacy queries Datasource xxx not found
1120 0
|
前端开发 Python
使用Python+openpyxl实现导出自定义样式的Excel文件
本文介绍了如何使用Python的openpyxl库导出具有自定义样式的Excel文件,包括设置字体、对齐方式、行列宽高、边框和填充等样式,并提供了完整的示例代码和运行效果截图。
867 1
使用Python+openpyxl实现导出自定义样式的Excel文件
|
安全 Linux Shell
在Linux中, 如何创建一个新用户和新组?
在Linux中, 如何创建一个新用户和新组?
|
算法 Python
打造高效生产排程:Python在APS解决方案中的应用
打造高效生产排程:Python在APS解决方案中的应用
948 2