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

目录
相关文章
|
8月前
|
微服务
【若依】 若依框架 删除左侧无用菜单报错 ‘菜单已分配,不允许删除’
【若依】 若依框架 删除左侧无用菜单报错 ‘菜单已分配,不允许删除’
1469 2
el-admin前后端项目二次开发自定义修改图标
el-admin前后端项目二次开发自定义修改图标
324 0
el-admin前后端项目二次开发自定义修改图标
|
Java Android开发
移动应用程序设计基础——点菜单列表实现
进一步理解Android各种控件的使用,加深控件的属性、方法的使用,熟练掌握ListView控件的使用,熟练掌握对话框的使用。 实现点菜单列表 1.1布局结构 列表布局分为两大部分,上半部分显示列表内容,底部显示所有菜品的总价; 菜品项如图所示包括 1.图片,图片格式120*120; 2.标题,居中,android:textAppearance="?android:attr/textAppearanceLarge", 3.菜品介绍内容,最多显示3行,超过部分用…表示,android:textAppearan
195 0
移动应用程序设计基础——点菜单列表实现
|
前端开发
前端工作小结88-定义有对话框的按钮
前端工作小结88-定义有对话框的按钮
102 0
|
PHP
【laravel项目】@9 laravel-admin汉化菜单 新增模块
【laravel项目】@9 laravel-admin汉化菜单 新增模块
164 0
【laravel项目】@9 laravel-admin汉化菜单 新增模块
|
SQL JSON 数据格式
JavaWeb 创建省市级关联菜单
JavaWeb 创建省市级关联菜单
113 0
JavaWeb 创建省市级关联菜单
|
数据库
如何在Joomla中删除组件菜单链接
有时,Joomla用户已删除组件,但仍在其管理区域中看到该组件的菜单项。
如何在Joomla中删除组件菜单链接
|
缓存
Confluence 6 自定义 Decorator 模板的宏和针对高级用户
宏 页面的某些部分使用的是 Velocity  宏进行创建的,包括导航栏。有关宏的创建,你可以参考页面 Working With Decorator Macros 页面中的内容。
1430 0

相关实验场景

更多