Skip to Content

Odoo 用户菜单架构解析及创建和管理用户菜单实战

Odoo 用户菜单架构解析及创建和管理实战

Odoo 中的用户菜单提供了一个简洁的界面,用户可以通过一个下拉菜单轻松访问关键功能、我的设置、寻求支持以及进行入职引导等操作。

本文将深入解析Odoo 18用户菜单系统的技术架构,通过实战案例演示如何为系统管理员添加开发者模式快捷入口。要实现这一点,我们可以向 user_menuitems 注册器中添加新的项目。

注册器就像是一个有序的键值对集合,是扩展 Odoo Web 客户端的主要方式。当 JavaScript 框架需要检索字段、视图、操作或服务等的定义时,只需在注册器中查找即可。

该功能的实现涉及JavaScript框架核心机制,是理解Odoo Web客户端扩展机制的最佳切入点。

一、用户菜单系统架构解析

1、注册器的类别:

  • 效果注册器:管理所有可用的视觉和行为效果。
  • 格式化器注册器:包含用于格式化值的实用函数,主要用于字段。
  • 解析器注册器:存放负责解释或解析值的函数。
  • 主组件注册器:用于在 Web 客户端中注册高级组件。
  • 服务注册器:列出系统中需要激活的服务。
  • 系统托盘注册器:控制导航栏右侧显示的内容。
  • 用户菜单注册器:处理位于导航栏右上角的用户菜单中显示的项目。

二、开发者模式快捷入口开发实战

1、JavaScript模块创建

/** @odoo-module **/
import { registry } from "@web/core/registry";
import { browser } from "@web/core/browser/browser";
import { _t } from "@web/core/l10n/translation";

function debugItem(env) {
   const urlParams = new URLSearchParams(window.location.search);
   urlParams.set('debug', '1');
   const debugURL = window.location.pathname + '?' + urlParams.toString();
   
   return {
       id: "debug",
       type: "item",
       description: _t("开发者模式"), // 多语言支持
       href: debugURL,
       callback: () => {
           browser.open(debugURL, "_self"); // 页面重定向
       },
       sequence: 60,  // 菜单项排序权重
   };
}

// 注册到用户菜单系统
registry.category("user_menuitems").add("debug", debugItem);

2、关键参数说明

  • description:菜单项显示的文本。
  • href:(可选)如果提供且有效,文本将放置在带有指定 href 链接的锚点(<a>)标签内。
  • sequence:(可选)指定该菜单项相对于下拉菜单中其他项目的顺序,数值越小排序越靠前(默认100)。
  • hide:(可选)指定该菜单项是否应隐藏(默认值为 false)
  • callback:选择该菜单项时执行的函数,支持异步操作(需返回Promise对象)

三、模块集成与部署

1、资源文件配置(manifest.py)

{
    'name': '开发者模式扩展',
    'version': '18.0.1.0',
    'assets': {
        'web.assets_backend': [
            'your_module/static/src/js/user_menu.js',
        ]
    }
}

我的模块名称为test_module,js文件名为menuitem.js资源文件配置:

{
    'name': '开发者模式扩展',
    'version': '18.0.1.0',
    'assets': {
        'web.assets_backend': [
            'test_module/static/src/js/menuitem.js',
        ]
    }
}

当安装该模块后,“开发者模式” 选项会出现在导航栏右上角的用户菜单中。点击该选项即可启用调试模式。

用户菜单通过在界面右上角提供对重要的用户特定操作的便捷访问,简化了导航并提高了效率。


Odoo 用户菜单架构解析及创建和管理用户菜单实战
6776, Administrator April 3, 2025
Tags
Archive