程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

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

balukai 2025-05-08 16:49:27 文章精选 4 ℃

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);

  1. 关键参数说明

·description:菜单项显示的文本。

·href:(可选)如果提供且有效,文本将放置在带有指定 href 链接的锚点(<a>)标签内。

·sequence:(可选)指定该菜单项相对于下拉菜单中其他项目的顺序,数值越小排序越靠前(默认100)。

·hide:(可选)指定该菜单项是否应隐藏(默认值为 false)

·callback:选择该菜单项时执行的函数,支持异步操作(需返回Promise对象)

  1. 模块集成与部署

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',

]

}}

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

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

Tags:

最近发表
标签列表