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

如何通过代码为Odoo 12网站创建「ABOUT US」主菜单的子菜单?

解决Odoo菜单重复创建问题:给已有主菜单添加子菜单

看起来你遇到的问题是代码重复创建了「ABOUT US」主菜单,而不是把「BOARD AND FOUNDERS」挂到已有的主菜单下面。我帮你分析下原因和解决方案:

问题根源

你的代码里同时定义了「ABOUT US」主菜单和它的子菜单。如果系统里已经存在一个「ABOUT US」主菜单,这段代码会因为你新增了一个ID为menu_about_us的菜单记录,导致出现两个同名的主菜单;如果是第一次创建,那逻辑是对的,但可能是ID冲突或者页面引用的问题导致显示异常。

分情况解决

情况1:系统里已经有「ABOUT US」主菜单

你只需要保留子菜单的代码,并且修改parent_id的引用,指向已存在的「ABOUT US」菜单的XML ID,而不是你自己定义的menu_about_us。

修正后的子菜单代码:

<!-- 给已有的ABOUT US主菜单添加子菜单 -->
<record id="menu_board_and_founders" model="website.menu">
    <field name="name">BOARD AND FOUNDERS</field>
    <field name="page_id" ref="board-and-founders" />
    <!-- 替换成你系统中已存在的ABOUT US菜单的XML ID -->
    <field name="parent_id" ref="existing_about_us_menu_id" />
    <field name="sequence" type="int">10</field>
</record>

提示:可以在Odoo的「网站设置」→「菜单」里找到已有的ABOUT US菜单,查看它的外部ID(XML ID)

情况2:需要新建「ABOUT US」主菜单和子菜单

如果系统里还没有这个主菜单,那你的代码逻辑是对的,但要确保菜单的XML ID是唯一的(避免和其他模块冲突),建议给ID加上你的模块前缀,比如your_module_name.menu_about_us:

<!-- 新建ABOUT US主菜单(带模块前缀确保ID唯一) -->
<record id="your_module.menu_about_us" model="website.menu">
    <field name="name">ABOUT US</field>
    <field name="page_id" ref="your_module.about-us" />
    <field name="parent_id" ref="website.main_menu" />
    <field name="sequence" type="int">10</field>
</record>

<!-- 新建子菜单挂到上面的主菜单下 -->
<record id="your_module.menu_board_and_founders" model="website.menu">
    <field name="name">BOARD AND FOUNDERS</field>
    <field name="page_id" ref="your_module.board-and-founders" />
    <field name="parent_id" ref="your_module.menu_about_us" />
    <field name="sequence" type="int">10</field>
</record>

额外检查项

  • 确认page_id引用的页面(about-us和board-and-founders)已经在你的模块中正确定义,没有拼写错误
  • 修改代码后,记得升级你的模块,然后刷新网站页面(必要时清除浏览器缓存)
  • 避免使用通用的XML ID(比如直接用menu_about_us),加上模块前缀可以减少冲突概率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:14:26