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

如何通过代码永久替换Odoo15任务栏默认标题与favicon图标

Odoo 15 代码级永久替换默认Odoo标题与favicon实现方案

常规后台上传favicon的方案出现加载闪烁,本质原因是原生favicon引用硬编码在核心布局模板的最前端,用户上传的图标是DOM加载完成后才通过JS动态替换的,必然会先加载原生图标。要实现零闪烁永久替换,必须从模板层面覆盖原生资源引用,把自定义资源的加载优先级提到最高。


具体实现步骤

所有操作都在自定义模块中完成,不要直接修改Odoo原生源码,避免后续版本升级覆盖配置。

1. 零闪烁替换favicon

  • 提前准备好自定义favicon文件,命名为favicon.ico(兼容多端建议同时准备1616、3232尺寸),放到自定义模块的static/src/img/目录下。
  • 在自定义模块的views/templates.xml中继承核心web布局模板,设置最高优先级直接替换原生favicon引用,代码如下:
<odoo>
    <template id="custom_web_favicon" inherit_id="web.layout" priority="999">
        <xpath expr="//link[@rel='icon']" position="replace">
            <link rel="icon" type="image/x-icon" href="/your_custom_module/static/src/img/favicon.ico"/>
            <link rel="shortcut icon" type="image/x-icon" href="/your_custom_module/static/src/img/favicon.ico"/>
        </xpath>
    </template>
</odoo>

关键参数说明:priority="999"代表模板渲染优先级,数值越大越先渲染,确保这个替换逻辑在Odoo原生逻辑、所有第三方模块逻辑之前执行,浏览器解析head标签时第一时间加载自定义favicon,完全不会触发原生Odoo图标加载,从根源解决闪烁问题。

2. 全场景替换默认「Odoo」标题

Odoo的标题分为后端模板初始渲染的默认标题、前端JS动态拼接的菜单标题两部分,需要同时覆盖才能彻底去掉所有场景下的Odoo标识:

  • 第一步在刚才的custom_web_favicon模板中追加代码,替换初始title标签:
<xpath expr="//title" position="replace">
    <title t-esc="title or '你的自定义系统名称'"/>
</xpath>
  • 第二步覆盖前端WebClient的标题生成逻辑,新建JS文件存放到自定义模块的static/src/js/custom_title.js:
/** @odoo-module **/
import { WebClient } from "@web/webclient/webclient";
import { patch } from "@web/core/utils/patch";

patch(WebClient.prototype, {
    setup() {
        super.setup();
        // 替换原生标题默认前缀,彻底移除Odoo字样
        this.title.setParts({ zopenerp: "你的自定义系统名称" });
    }
});
  • 第三步把JS文件注册到后台资源加载列表,在templates.xml中追加模板:
<template id="custom_title_assets" inherit_id="web.assets_backend" priority="999">
    <xpath expr="." position="inside">
        <script type="text/javascript" src="/your_custom_module/static/src/js/custom_title.js"/>
    </xpath>
</template>

3. 登录页适配(可选)

如果需要登录页也完全替换为自定义内容,只需要额外继承web.login_layout模板,用同样的高优先级替换登录页的favicon和title标签即可。


生效验证

升级自定义模块后,强制清空浏览器缓存(Ctrl+Shift+R)刷新页面,从页面加载第一帧到进入后台操作全流程,都不会出现原生Odoo的favicon和标题,只要自定义模块不卸载,后续Odoo小版本升级也不会重置配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 12:24:56