方法如下,代码在最下面
根据我上一篇文章而言,我们继承并修改了web.layout的标题
但是这也仅仅修改了部分的标题,我们来看看如下页面
想要在深度修改这个字样显然继承修改已经办不到了,而多打开几个页面不难发现,每个页面都会根据我们自己编写的xml的标题进行修改但最后的字段一直是 - Odoo字样,对于公司作为商品显然是不满足的,而能做到这个功能的只有js才能办到。
那么根据上一篇文章搜索到的xml文件,我们即可定位在web文件中
source/odoo/addons/web
对于odoo而言js文件通常放在当前目录的static里面即:
./static/src/js
那么我们只需在里面搜索Odoo,然后一个个看,还有一个小技巧上下文是要有关title的就几乎可以肯定了,这个就需要有点耐心了
根据上图终于是找到一个set的方法,那我们最直接的办法就是将上面的Odoo改为自己的名称试一下。(此方法最好不要保存,只是试一下有没有效果,可以就赶紧改回去,源码不建议修改!)
根据下图显示确实是可以的,那么按照Odoo的风格来说,应该是写一个JS文件来替代。
那么我们就需要在我们自己项目的应用上创建一个js文件来覆盖
按照Odoo的惯例创建的路径为(没有就自行创建)
应用目录/static/src/js
写好的文件为如下
写好之后复制我们找到源码中存放该代码的文件名
abstract_web_client
在该应用目录下的views下搜索该关键字,查看引用该js文件的xml的id
那我们在上一篇文章中的xml文件继承该template的然后将我们新创的js文件引入里面
inherit_id这里最好要加上继承的应用目录名否则可能会找不到该id或者重复,如图web.assets_backend
昨晚这些后在__manifest__.py引用上图的xml文件,重启升级即可
js文件代码:
// 声明fruit.FruitTitle模块
odoo.define('fruit.FruitTitle', function(require){
"use strict";
var AbstractWebClient = require('web.AbstractWebClient');
// 修改init方法
AbstractWebClient.include({
init: function(parent){
this._super(parent);
this.set('title_part',{'zopenerp': '水果'});
},
});
});
xml文件代码:
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data>
<!-- 引入JS文件 -->
<template id="inherit_web_title" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript" src="/fruit_app/static/src/js/change_title.js"/>
</xpath>
</template>
</data>
</odoo>