如何在自定义模块中使用JSON定制Odoo 17销售仪表盘以隐藏特定区域?
如何在自定义模块中使用JSON定制Odoo 17销售仪表盘以隐藏特定区域?
嘿,我来帮你搞定这个Odoo 17销售仪表盘的定制问题!要隐藏特定区域,咱们得通过自定义模块来覆盖原仪表盘的JSON配置,具体步骤如下:
1. 准备自定义模块(如果还没有的话)
首先得有自己的自定义模块,要是还没创建,先搭好基础结构:
- 新建模块目录,比如
custom_sales_dashboard - 在模块根目录创建
__manifest__.py,里面要包含依赖的核心模块:
{ 'name': 'Custom Sales Dashboard', 'version': '1.0', 'depends': ['spreadsheet_dashboard', 'sale'], 'data': [ 'data/xml/dashboard.xml', ], 'installable': True, 'auto_install': False, }
- 创建对应的
data/files和data/xml目录,分别用来放自定义的JSON仪表盘文件和XML配置文件。
2. 复制原销售仪表盘的JSON文件
别直接修改Odoo核心模块的文件,咱们把原销售仪表盘的JSON复制到自己模块里:
- 找到Odoo核心模块
spreadsheet_dashboard_sale下的sales_dashboard.json文件,路径大概是addons/spreadsheet_dashboard_sale/data/files/sales_dashboard.json - 把这个文件复制到你自定义模块的
data/files目录下,命名可以保持原样,或者改成custom_sales_dashboard.json都行。
3. 编辑JSON文件隐藏特定区域
打开复制过来的JSON文件,找到你要隐藏的区域对应的配置项:
- Odoo的仪表盘JSON里,每个可视化区域(比如卡片、图表、列表)都是一个
widget,或者属于某个sheet下的元素 - 找到目标区域的配置段,把它的
visible属性改成false;如果找不到visible属性,也可以直接删除对应的widget配置块 - 举个例子,假设你要隐藏“我的销售订单”这个区域,找到类似下面的配置,修改
visible值:
{ "id": "my_sales_orders_widget", "type": "list", "visible": false, // 把这里改成false "position": {...}, "config": {...} }
- 编辑完后保存JSON文件,注意格式要正确,不然仪表盘可能加载失败。
4. 在XML中重写原仪表盘记录
接下来要让Odoo用咱们自定义的JSON文件替换原销售仪表盘的配置,在自定义模块的data/xml/dashboard.xml里添加如下代码:
<odoo> <record id="spreadsheet_dashboard_sales" model="spreadsheet.dashboard"> <field name="name">Sales</field> <!-- 这里指定你自定义模块里的JSON文件路径 --> <field name="spreadsheet_binary_data" type="base64" file="custom_sales_dashboard/data/files/sales_dashboard.json"/> <field name="dashboard_group_id" ref="spreadsheet_dashboard.spreadsheet_dashboard_group_sales"/> <field name="group_ids" eval="[Command.link(ref('sales_team.group_sale_manager'))]"/> <field name="sequence">100</field> </record> </odoo>
注意:这里的
id要和原仪表盘的记录ID完全一致(spreadsheet_dashboard_sales),这样Odoo才会用咱们的配置覆盖原有的。
5. 升级模块并测试
最后一步就是升级你的自定义模块:
- 登录Odoo后台,找到“应用”模块,搜索你的自定义模块(比如
Custom Sales Dashboard) - 点击“升级”按钮,等待模块升级完成
- 刷新销售仪表盘页面,你会发现目标区域已经被隐藏了!
一些小提示
- 要是不确定JSON里哪个对应目标区域,可以先在仪表盘里右键检查元素,或者导出当前仪表盘的配置(Odoo 17支持在仪表盘编辑模式下导出JSON)
- 编辑JSON时最好用带语法高亮的编辑器,避免格式错误
- 不要直接修改核心模块的文件,否则Odoo升级后你的修改会丢失
备注:内容来源于stack exchange,提问作者sps
相关产品推荐
相关产品推荐

