You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo 16 如何为门户下拉框添加带跳转的菜单项?

解决方案提示

1. 定位正确的模板文件

你找的portal_templates.xml并非目标文件,门户右上角用户下拉菜单的核心定义在portal/views/portal_layout.xml中,其中名为portal_user_menu的QWeb模板片段负责渲染该下拉菜单。

2. 通过自定义模块扩展模板(核心步骤)

禁止直接修改Odoo核心模块文件,需创建自定义模块来扩展模板:

  • 在自定义模块内新建views/portal_custom_menu.xml文件
  • 使用Odoo模板继承语法,扩展portal_user_menu并添加新菜单项:
<odoo>
  <template id="portal_custom_user_menu" inherit_id="portal.portal_user_menu" name="Custom Portal User Menu">
    <xpath expr="//div[@class='dropdown-menu dropdown-menu-right']" position="inside">
      <a class="dropdown-item" href="/your-target-page">自定义跳转项</a>
    </xpath>
  </template>
</odoo>
  • 将该XML文件添加到模块__manifest__.py的data列表中,确保模块加载时能识别。

3. 配置自定义页面路由(若目标页面为自定义页面)

如果跳转的指定页面是你自己开发的,需在自定义模块的controllers/main.py中添加路由:

from odoo import http
from odoo.http import request

class PortalCustomController(http.Controller):
    @http.route('/your-target-page', type='http', auth='user', website=True)
    def load_custom_page(self):
        # 这里可传递模板所需变量,若无则留空字典
        return request.render('your_module_name.custom_page_template', {})

同时创建对应的QWeb模板文件views/custom_page_template.xml,编写页面渲染内容。

4. 测试验证

安装/升级你的自定义模块,刷新门户页面即可看到下拉菜单中新增的跳转项。

关键注意事项

  • 始终遵循Odoo的扩展规范,用自定义模块继承替代修改核心文件,避免升级时丢失配置
  • 路由中的auth='user'确保仅登录的门户用户可访问,若需允许未登录访问可改为auth='public'
  • 跳转路径需与路由定义完全一致

内容的提问来源于stack exchange,提问作者Evgeny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 10:58:23