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

Odoo17门户「我的账户」添加自定义Enquiry菜单失败求助

解决Odoo17「我的账户」自定义菜单不显示问题

1. 修正模板继承目标

原代码错误继承了portal.portal_layout,但「我的账户」的菜单入口区域实际在portal.portal_my_home模板中,需修改继承目标:

<odoo>
    <template id="portal_my_home_inherit" inherit_id="portal.portal_my_home">
        <!-- 后续插入菜单的代码 -->
    </template>
</odoo>

2. 精准定位菜单插入位置

原XPath范围过广,「我的账户」的菜单卡片统一放在div.o_portal_docs容器内,需调整定位:

<xpath expr="//div[hasclass('o_portal_docs')]" position="inside">
    <t t-call="portal.portal_docs_entry">
        <t t-set="url">/my/enquiry</t>
        <t t-set="title">Enquiry</t>
        <!-- 可选:添加统一风格的图标 -->
        <t t-set="icon" t-value="'fa-question-circle'"/>
    </t>
</xpath>

3. 配置路由与视图确保可访问

菜单点击后需能跳转至对应页面,需在自定义模块中补充以下配置:

路由配置(controllers/main.py)

from odoo import http
from odoo.http import request

class PortalEnquiry(http.Controller):
    @http.route('/my/enquiry', auth='user', website=True)
    def portal_my_enquiry(self):
        # 仅显示当前用户的咨询记录
        enquiries = request.env['enquiry'].search([('partner_id', '=', request.env.user.partner_id.id)])
        return request.render('wb_portal.portal_enquiry_list', {
            'enquiries': enquiries,
        })

列表视图模板(views/portal_templates.xml)

<template id="portal_enquiry_list" name="Enquiry List">
    <t t-call="portal.portal_layout">
        <div class="container o_portal_container">
            <h1>我的咨询</h1>
            <table class="table table-striped">
                <thead>
                    <tr>
                        <th>主题</th>
                        <th>创建时间</th>
                        <th>状态</th>
                        <th>操作</th>
                    </tr>
                </thead>
                <tbody>
                    <t t-foreach="enquiries" t-as="enquiry">
                        <tr>
                            <td><t t-esc="enquiry.subject"/></td>
                            <td><t t-esc="enquiry.create_date"/></td>
                            <td><span t-esc="enquiry.state"/></td>
                            <td><a t-attf-href="/my/enquiry/#{enquiry.id}" class="btn btn-sm btn-primary">查看详情</a></td>
                        </tr>
                    </t>
                </tbody>
            </table>
        </div>
    </t>
</template>

4. 配置门户用户权限

在模块的security/ir.model.access.csv中添加权限规则,确保门户用户能读取咨询记录:

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_enquiry_portal,enquiry.portal,model_enquiry,base.group_portal,1,0,0,0

5. 模块更新与缓存清理

  • 升级自定义模块wb_portal
  • 进入Odoo后台「设置 > 技术 > 工具 > 清除缓存」
  • 强制刷新门户页面(避免浏览器缓存影响)

常见排查点

  • 检查模板是否激活:在「设置 > 技术 > 用户界面 > 视图」中搜索portal_my_home_inherit,确认状态为激活
  • 直接测试路由:访问/my/enquiry,验证页面是否能正常打开
  • 确认用户权限:确保当前登录的门户用户有对应enquiry记录的访问权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 07:31:09