我想在 odoo 门户视图上显示自定义菜单。 XML 文件:
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>
<template id="portal_my_home_loan" name="Partner Loan"
customize_show="True" inherit_id="portal.portal_my_home">
<xpath expr="//div[hasclass('o_portal_docs')]" position="inside">
<t t-call="portal.portal_docs_entry">
<t t-set="title">Partner Loan</t>
<t t-set="url" t-value="'/my/loan'" />
<!-- <t t-set="placeholder_count" t-value="'loan_count'" /> -->
</t>
</xpath>
</template>
</data>
</odoo>
python 文件:
from odoo.addons.portal.controllers.portal import CustomerPortal
class PortalAccount(CustomerPortal):
def _prepare_home_portal_values(self, counters):
values = super()._prepare_home_portal_values(counters)
values['loan_count'] = 1
return values
已添加
portal
至清单文件中的依赖项以及清单文件中的 template.xml。在我的用户门户视图上仍然看不到菜单。
知道我哪里出了问题吗?
你的代码看起来不错,但可能有一些原因导致自定义菜单没有显示在 Odoo 门户视图上:
-
缓存问题: Odoo 会缓存视图和其他数据以提高性能。在进行更改后,请尝试清除浏览器缓存或使用 隐身模式/私人浏览模式 访问门户,以确保看到的是最新版本。
-
视图继承错误: 确保你的 XPath 表达式
//div[hasclass('o_portal_docs')]
正确定位到你想插入菜单的位置。你可以使用浏览器的开发者工具检查门户页面的 HTML 结构,以确认 XPath 表达式是否正确。 -
模块未升级/安装: 确保你的自定义模块已正确安装并升级。你可以前往“应用”菜单,搜索你的模块并检查其状态。
-
权限问题: 确保当前登录的用户有权访问你想要显示的菜单。检查与菜单相关联的模型和操作的访问权限。
-
缺少
t-if
条件: 如果你在t-call
中使用了t-if
条件来控制菜单的显示,确保条件的值为True
。
以下是针对每个可能问题的解决方法:
-
清除浏览器缓存: 大多数浏览器允许你通过快捷键(例如 Ctrl+Shift+Del 或 Cmd+Shift+Del)清除缓存。
-
验证 XPath 表达式: 使用浏览器的开发者工具(通常按 F12 键打开)检查门户页面的 HTML 源代码。找到你想插入菜单的位置,并验证你的 XPath 表达式是否能选择到正确的元素。
-
升级/安装模块: 在 Odoo 中,前往“应用”菜单。如果你的模块显示为“需升级”,请点击“升级”按钮。如果模块未安装,请先安装它。
-
检查访问权限: 进入“设置”菜单,然后进入“用户和公司” -> “用户”。选择你当前登录的用户,并检查其所属的用户组。确保该用户组拥有访问你想要显示的菜单所需的所有权限。
-
检查
t-if
条件: 如果你使用了t-if
条件,确保条件的值为True
。例如,如果你使用t-if="loan_count"
,请确保loan_count
变量的值不为 0 或False
。
如果以上方法都无法解决问题,请提供以下信息以便进一步分析:
- 你使用的 Odoo 版本
- 完整的错误日志(如果有)
- 你尝试访问门户页面的 URL
- 你自定义模块的完整代码