odoo菜單定義和修改學習總結 環境 odoo-14.0.post20221212.tar 定義菜單 方式1: <?xml version="1.0"?> <odoo> <menuitem id="root_menu_id" name="TopMenu" web_icon="estate,stati ...
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"
修改菜單
本節要介紹的是一種特殊的修改方式,並不是直接修改原有菜單定義。這種修改方式之所以特殊,是因為它不修改原有菜單的定義,而是通過重新定義菜單來修改,可以簡單的類比為“繼承”,具體做法如下:
-
定義一個新的菜單
<menuitem>
,將其id
屬性值設置為原有菜單所在模塊名稱及其id
屬性值的組合,形如:moduleName.source_menu_id
(參見下述示例),如果新的菜單和原有菜單在同一個模塊,可以省略moduleName.
。 -
修改相關菜單屬性值為目標值(如果需要的話)
示例:重新定義
purchase.menu_purchase_root
菜單名稱<menuitem id="purchase.menu_purchase_root" name="omsPurchase"/>
-
以新定義的菜單為父級菜單,添加子菜單(如果需要的話),添加方式可以參考上文所述,需要註意的是,不管採用哪種方式,原有菜單的子菜單依然存在,並顯示為新定義菜單的子菜單
-
隱藏原有菜單的子菜單(如果需要的話)
定義一個
<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
作者:授客
微信/QQ:1033553122
全國軟體測試QQ交流群:7156436
Git地址:https://gitee.com/ishouke
友情提示:限於時間倉促,文中可能存在錯誤,歡迎指正、評論!
作者五行缺錢,如果覺得文章對您有幫助,請掃描下邊的二維碼打賞作者,金額隨意,您的支持將是我繼續創作的源動力,打賞後如有任何疑問,請聯繫我!!!
微信打賞
支付寶打賞 全國軟體測試交流QQ群