如何在Odoo看板视图中移除"Archive Record"与"Restore Records"选项?
移除Odoo看板视图设置中的归档/恢复选项
下面提供两种可行的实现方式,按需选择:
方法1:针对单个模型修改XML视图
Odoo看板的设置菜单是通过视图XML里的<settings>节点定义的,你可以继承目标模型的看板视图,重新定义这个节点,只保留「Fold」选项。
举个例子,假设要修改联系人(res.partner)模型的看板视图,新建如下XML代码:
<odoo> <record id="view_partner_kanban_inherit" model="ir.ui.view"> <field name="name">res.partner.kanban.inherit</field> <field name="model">res.partner</field> <field name="inherit_id" ref="base.view_partner_kanban"/> <field name="arch" type="xml"> <!-- 替换原有的settings节点 --> <xpath expr="//kanban/settings" position="replace"> <settings> <item name="fold" string="Fold"/> <!-- 删掉Archive和Restore对应的item,只留折叠选项 --> </settings> </xpath> </field> </record> </odoo>
把这段代码放到你自定义模块的XML文件里,升级模块后,该模型的看板设置菜单就只会显示「Fold」了。
方法2:全局修改所有看板视图(JS扩展)
如果想让所有模型的看板都隐藏这两个选项,可以用JS扩展来实现:
- 在自定义模块里创建JS文件
static/src/js/kanban_custom.js,内容如下:
odoo.define('your_module.kanban_custom', function (require) { "use strict"; const KanbanController = require('web.KanbanController'); const KanbanView = require('web.KanbanView'); const viewRegistry = require('web.view_registry'); const CustomKanbanController = KanbanController.extend({ // 重写获取设置菜单的方法,过滤掉归档和恢复选项 _getSettingsMenuItems: function () { let items = this._super(...arguments); // 过滤掉name为archive(归档)和unarchive(恢复)的选项 return items.filter(item => !['archive', 'unarchive'].includes(item.name)); }, }); const CustomKanbanView = KanbanView.extend({ config: _.extend({}, KanbanView.prototype.config, { Controller: CustomKanbanController, }), }); viewRegistry.add('kanban', CustomKanbanView); return { CustomKanbanController: CustomKanbanController, CustomKanbanView: CustomKanbanView, }; });
- 在模块的
__manifest__.py里引入这个JS文件:
{ # 其他模块配置... 'assets': { 'web.assets_backend': [ 'your_module/static/src/js/kanban_custom.js', ], }, }
升级模块并刷新页面后,所有看板视图的设置菜单里就看不到归档和恢复选项了。
小提示
- 方法1适合精准控制单个模型,方法2适合全局统一修改;
- 操作后记得升级模块、清空浏览器缓存再测试;
- 企业版Odoo的视图结构和社区版基本一致,上述方法同样适用。
内容的提问来源于stack exchange,提问作者Mahfujul Hasan
相关产品推荐
相关产品推荐

