Odoo如何修改默认菜单项的展示视图
Odoo 菜单项样式调整实现方案
要将默认侧边栏菜单项调整为顶部水平排列样式,通过自定义模块继承修改原生视图即可实现,无需修改Odoo核心代码,操作步骤如下:
- 第一步:创建自定义模块,在模块的
__manifest__.py中声明对web基础模块的依赖。 - 第二步:在模块路径下新建
static/src/xml/web_menu.xml文件,继承原生导航栏QWeb模板,重写菜单渲染结构:
<?xml version="1.0" encoding="UTF-8"?> <templates xml:space="preserve"> <t t-inherit="web.WebClient.NavBar" t-inherit-mode="extension"> <xpath expr="//div[hasclass('o_navbar_apps_menu')]" position="replace"> <div class="o_horizontal_menu d-flex align-items-center w-100"> <t t-foreach="menuApps" t-as="app"> <a t-attf-href="/web#menu_id={{app.id}}" class="px-3 py-2 text-decoration-none text-nowrap" t-att-class="currentApp.id == app.id ? 'text-primary fw-bold' : 'text-muted'"> <t t-esc="app.name"/> </a> </t> </div> </xpath> </t> </templates>
- 第三步:新建
static/src/css/menu_style.css文件,调整全局布局适配水平菜单样式:
/* 隐藏原侧边栏触发按钮与侧边栏本身 */ .o_main_navbar .o_menu_toggle, .o_app_sidebar { display: none !important; } /* 调整主内容区边距,适配顶部菜单高度 */ .o_action_manager { margin-left: 0 !important; margin-top: 56px !important; } /* 水平菜单超出宽度时滚动隐藏滚动条 */ .o_horizontal_menu { overflow-x: auto; -ms-overflow-style: none; scrollbar-width: none; } .o_horizontal_menu::-webkit-scrollbar { display: none; }
- 第四步:在
__manifest__.py的assets节点注册新增的静态资源:
'assets': { 'web.assets_backend': [ '你的自定义模块名/static/src/xml/web_menu.xml', '你的自定义模块名/static/src/css/menu_style.css', ], },
- 第五步:安装或升级自定义模块,刷新浏览器后即可生效。如果需要调整菜单项的展示顺序、显示层级,可以直接修改
ir.ui.menu记录的sequence、parent_id属性即可。
内容的提问来源于stack exchange,提问作者NM Naufaldo
相关产品推荐
相关产品推荐

