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群
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/543057.html
標籤:Python
上一篇:跟著廖雪峰學python 003