首页 > 其他分享 >Odoo 菜单定义和修改学习总结

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

时间:2023-02-06 00:35:16浏览次数:53  
标签:菜单 group 定义 ID 模块 Odoo id

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"/>
    
  3. 以新定义的菜单为父级菜单,添加子菜单(如果需要的话),添加方式可以参考上文所述,需要注意的是,不管采用哪种方式,原有菜单的子菜单依然存在,并显示为新定义菜单的子菜单

  4. 隐藏原有菜单的子菜单(如果需要的话)

    定义一个<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

标签:菜单,group,定义,ID,模块,Odoo,id
From: https://www.cnblogs.com/shouke/p/17054467.html

相关文章

  • Cesium通过自定义着色器实现倾斜压平
    实现原理PS:使用customShader实现倾斜压平,没改源码获取模型的顶点数据后转以模型中心点的局部坐标系下(这里把所有点数据都在统一的局部坐标系下处理)把绘制的范围转为模......
  • MMLab中自定义模块初始化方法
    这方面好像介绍的少,看了下基本原理,下面介绍下如何在搭载权重的模型中加入自定义模块时方便的进行初始化。MMLab的逻辑时对每个部分进行初始化,若此部分定义了初始化方法为P......
  • tp5.x 自定义错误页
    thinkphp5自定义错误页面,话不多说,直接上干货1.关闭所有app_debug,即把 'app_debug'=>true修改为'app_debug'=>false2.在config.php(tp5.1config目录app.php)中配......
  • qtableview及自定义model的使用,对比qtablewidget性能及内存优化(转)
    以前一直使用qtableiwdget,最近有时间来研究下qtableview,才知道,qtableview和自定义model,比qtablewidget的性能啊,及占用内存啊,优化太多了。以前我使用qtablewidget是进行动态......
  • zabbix自定义监控项
    有时候当我们监控的项目在zabbix预定义的key中没有定义时,这时候我们可以通过编写zabbix的用户参数的方法来监控我们要求的项目item。形象一点说zabbix代理端配置文件中的U......
  • windows右键菜单扩展容器[开源]
    今天给大家分享一个我做的小工具,可以自定义扩展右键菜单的功能来提高工作效率,效果图如下:image如上图,右键菜单多了几个我自定义的菜单复制文件路径复制文件夹路......
  • 162-cas-server5.3修改自定义登录页,记住我
    新建src/main/resources资源目录将War包里的~/classes/templates/中的相关文件,复制过来:比如我修改到的圈红的哪些文件,复制过来修改就行。application.properties中添加......
  • 微信小程序-自定义tabbar配置及注意事项
    1.选中要创建tabbar组件的目录,右键选定新建Componen2.然后编写wxml代码和wxss样式<cover-viewclass="tab-bar"><cover-viewclass="tab-bar-border"></cover-view>......
  • QT中级(1)QTableView自定义委托(一)实现QSpinBox、QDoubleSpinBox委托
    1写在前面的话我们在之前写的《QT(7)-初识委托》文章末尾提到,“使用一个类继承QStyledItemDelegate实现常用的控件委托,在使用时可以直接调用接口,灵活实现各种委托”。我......
  • .Net 7 高端玩法,自定义一个CLR运行时
    前言:曾几何时,一直想自己定制一个CLR运行时玩玩。满足下技术控的虚荣心,本篇带你一步一步打造一个属于自己的.Net7运行时。概括假设你的电脑已经安装了.Net,并且运行正......