Odoo15不修改源码修改浏览器标签标题的实现方法
修改Odoo浏览器标签页标题(无需修改核心源码)
核心思路
利用Odoo内置的title服务和组件补丁机制,通过自定义模块扩展WebClient组件的初始化逻辑,覆盖默认标题设置,全程无需改动Odoo核心源码。
步骤1:创建自定义模块基础结构
在Odoo的addons目录下新建模块(示例模块名为custom_title),目录结构如下:
custom_title/ ├── __manifest__.py └── static/ └── src/ └── js/ └── webclient_extension.js
步骤2:编写模块配置文件 __manifest__.py
{ 'name': '自定义浏览器标题', 'version': '1.0', 'depends': ['web'], 'data': [], 'assets': { 'web.assets_backend': [ 'custom_title/static/src/js/webclient_extension.js', ], }, 'installable': True, 'auto_install': False, }
步骤3:编写前端扩展代码 webclient_extension.js
通过补丁(patch)机制修改WebClient的初始化逻辑,替换默认标题:
/** @odoo-module **/ import { patch } from "@web/core/utils/patch"; import { WebClient } from "@web/webclient/webclient"; // 补丁WebClient组件,覆盖标题设置 patch(WebClient.prototype, 'custom_title.WebClient', { setup() { // 先执行原有的初始化逻辑 super.setup(); // 替换默认的"Odoo"为自定义内容 this.title.setParts({ zopenerp: "我的自定义Odoo平台" }); }, });
进阶:动态结合公司名称
如果需要显示当前登录用户的公司名称,可修改代码如下:
/** @odoo-module **/ import { patch } from "@web/core/utils/patch"; import { WebClient } from "@web/webclient/webclient"; import { useService } from "@web/core/utils/hooks"; patch(WebClient.prototype, 'custom_title.WebClient', { setup() { super.setup(); // 获取用户服务,用于加载公司信息 this.user = useService("user"); // 等待用户信息加载完成后设置动态标题 this.user.load().then(() => { const companyName = this.user.company.name; this.title.setParts({ zopenerp: `${companyName} - 管理系统` }); }); }, });
步骤4:安装并启用模块
- 将
custom_title模块放入Odoo的addons目录 - 登录Odoo后台,进入「应用」模块,点击「更新应用列表」
- 搜索「自定义浏览器标题」模块,点击安装
- 刷新页面,浏览器标签页标题即可生效
关键说明
title.setParts()方法:Odoo的标题由多个部分拼接而成,zopenerp是默认的固定前缀部分,修改它不会影响页面动态生成的标题后缀(比如当前打开的表单/列表名称)- 补丁机制:Odoo允许通过
patch方法扩展核心组件逻辑,无需修改源码,升级Odoo时也不会丢失自定义配置
内容的提问来源于stack exchange,提问作者Kyle
相关产品推荐
相关产品推荐

