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

如何在Odoo 11中重写及美化数据库选择页面?需建模块吗?

在Odoo 11中重写并美化数据库选择页面的完整指南

嘿,我来一步步教你搞定这个需求——完全不用动Odoo的核心文件,用自定义模块就能实现重写和美化,还能避免升级时被覆盖的问题!

一、要不要创建新模块?必须要!

直接修改/web/views/database_manage.html这种核心文件绝对是大忌,下次升级Odoo你的修改就没了。所以一定要做一个独立的自定义模块,所有修改都放在里面。

二、模块要装到哪个数据库?其实不用装到特定库!

这个有点特殊:数据库选择页面是Odoo启动后还没进入任何数据库时显示的全局页面,所以你的模块只需要被Odoo识别加载就行,不需要安装到某个具体的数据库。当然你要是不小心在某个库里装了也没关系,不会有冲突。

三、具体操作步骤

1. 搭建自定义模块的基础结构

先创建一个叫custom_database_select的模块,目录结构如下:

custom_database_select/
├── __init__.py  # 空文件即可
├── __manifest__.py  # 模块配置文件
├── views/
│   └── database_manage_custom.xml  # 自定义模板文件
└── static/
    └── src/
        └── scss/
            └── database_custom.scss  # 美化用的样式文件

2. 编写模块配置文件__manifest__.py

这里要声明模块的依赖、要加载的模板和样式:

{
    'name': '自定义数据库选择页面',
    'version': '11.0.1.0.0',
    'author': '你的名字',
    'category': 'Web',
    'depends': ['web'],  # 依赖核心web模块
    'data': [
        'views/database_manage_custom.xml',
    ],
    'qweb': [
        'views/database_manage_custom.xml',  # 告诉Odoo加载我们的自定义模板
    ],
    'assets': {
        'web.assets_frontend': [
            'custom_database_select/static/src/scss/database_custom.scss',  # 加载自定义样式
        ],
    },
    'installable': True,
    'auto_install': False,
}

3. 重写数据库选择页面的模板

在views/database_manage_custom.xml里,我们通过继承原模板来修改内容,这样不会破坏原有功能:

<odoo>
    <!-- 先继承原模板做自定义修改 -->
    <template id="database_manage_custom" inherit_id="web.database_manage" name="自定义数据库管理页面">
        <!-- 替换默认的页面标题 -->
        <xpath expr="//h1" position="replace">
            <h1 class="custom-title">欢迎选择您的业务数据库</h1>
        </xpath>

        <!-- 给数据库列表容器加自定义类,方便美化 -->
        <xpath expr="//div[@class='oe_database_list']" position="attributes">
            <attribute name="class">oe_database_list custom-db-list</attribute>
        </xpath>

        <!-- 可以加自定义内容,比如底部的版权提示 -->
        <xpath expr="//div[@class='oe_footer']" position="after">
            <div class="custom-footer">
                <p>由你的团队定制 © 2024</p>
            </div>
        </xpath>
    </template>

    <!-- 替换原模板的引用,让Odoo优先加载我们的自定义模板 -->
    <template id="web.database_manage" inherit_id="web.database_manage" name="覆盖默认数据库页面">
        <t position="replace">
            <t t-call="custom_database_select.database_manage_custom"/>
        </t>
    </template>
</odoo>

这里用XPath定位原模板里的元素,然后做替换、添加属性或者插入新内容,非常灵活。

4. 写美化样式

在static/src/scss/database_custom.scss里写你想要的样式,比如把数据库列表改成卡片式布局,加hover效果:

/* 自定义标题样式 */
.custom-title {
    color: #2c3e50;
    font-size: 2.5rem;
    margin-bottom: 2rem;
    text-align: center;
}

/* 数据库列表改成网格布局 */
.custom-db-list {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 1.5rem;
    margin-top: 2rem;
}

/* 数据库卡片美化 */
.custom-db-list .oe_database {
    background: #ffffff;
    border-radius: 8px;
    box-shadow: 0 2px 10px rgba(0,0,0,0.1);
    padding: 1.5rem;
    transition: transform 0.3s ease;
}

.custom-db-list .oe_database:hover {
    transform: translateY(-5px);
    box-shadow: 0 4px 15px rgba(0,0,0,0.15);
}

/* 自定义页脚样式 */
.custom-footer {
    text-align: center;
    margin-top: 3rem;
    color: #7f8c8d;
    font-size: 0.9rem;
}

5. 让模块生效

  • 把这个模块放到Odoo的addons目录下,或者在odoo.conf里通过addons_path参数指定模块所在的文件夹路径。
  • 重启Odoo服务,这样Odoo就能加载到这个模块了。

四、验证效果

重启后访问数据库选择页面(比如http://localhost:8069/web/database/manager),就能看到修改后的标题、卡片式的数据库列表和自定义页脚了!

如果还想加交互功能(比如点击数据库卡片的动画),可以在模块里加JS文件,然后在__manifest__.py的web.assets_frontend里引入就行,方法和加CSS一样。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:06:44