Odoo V16中如何替换web.login_layout里的“Powered by Odoo”按钮?
解决Odoo 16替换登录页“Powered by Odoo”的问题
问题根源
你的代码失效主要有两个原因:
- 模板文件路径错误:后端QWeb模板不应放在
static/src/xml目录下,该目录用于前端组件模板,而非后端渲染的页面模板。 - XPath定位不匹配:Odoo 16的登录页底部区域结构有细微调整,原XPath无法命中目标元素。
修正步骤
1. 调整文件结构
将edit_weblayout.xml从static/src/xml移动到模块根目录的views文件夹下(无views文件夹则新建)。
2. 更新manifest.py路径
修改manifest.py中的data字段,指向正确的模板路径:
"data": [ "views/edit_weblayout.xml", ],
3. 修正模板内容
使用精准的XPath定位目标区域并替换为自定义内容:
<odoo> <data> <template id="custom_login_layout" inherit_id="web.login_layout" priority="10"> <!-- 定位底部版权容器并替换 --> <xpath expr="//div[hasclass('text-center', 'small', 'mt-4', 'pt-3', 'border-top')]" position="replace"> <div class="text-center small mt-4 pt-3 border-top"> <!-- 自定义内容示例 --> <p>© 2024 你的公司名称</p> </div> </xpath> </template> </data> </odoo>
若上述XPath仍无法命中,可直接定位“Powered by Odoo”的父容器:
<xpath expr="//a[contains(text(), 'Powered by Odoo')]/.." position="replace"> <div class="text-center small mt-4 pt-3 border-top"> <p>自定义版权信息</p> </div> </xpath>
4. 生效操作
- 重启Odoo服务
- 在应用列表中找到你的自定义模块,点击升级
- 清除浏览器缓存(或用隐私模式打开登录页)查看效果
内容的提问来源于stack exchange,提问作者TheOdemMove
相关产品推荐
相关产品推荐

