跳至内容

解读 Odoo Website.page 模型:网站页面架构详解

面向开发者与功能顾问的 Odoo 网站页面模型全解析 — 从概念到实操
2026年3月11日 由
解读 Odoo Website.page 模型:网站页面架构详解
Dasolo
| 还没有评论

概述:为什么要重视 Odoo 的静态页面模型


在 Odoo 中,“模型”决定了数据如何被组织和存储。简单来说,你在业务中看到的每一条记录都存在某个模型里,模型定义了字段、关系和数据类型,是数据库的蓝图。


对于开发者与功能顾问而言,弄清模型结构是基础技能。模型不仅声明字段,还承载验证规则、默认值和业务逻辑,是理解系统行为与扩展能力的出发点。


本文聚焦于 website.page 这个模型:它负责管理网站上的静态页面。如果你的项目涉及自定义落地页、公司介绍页或需要把外部内容同步到网站,这个模型会频繁出现。

什么是 website.page 模型(用一句话说明)


website.page 在 Odoo 里表示手工创建和编辑的静态页面(如“关于我们”“联系我们”或营销落地页)。它属于 Website 应用生态,用于保存那些通过网站构建器维护的页面记录。


技术上,website.page 通过 Odoo 的模型继承机制与 ir.ui.view 关联(采用 _inherits)。也就是说,每条 page 记录对应一个包含 QWeb 模板和视图元数据的 ir.ui.view。页面的实际 HTML/模板存在那个视图里。

注意,像店铺列表或博客归档这类动态生成的页面,通常并不作为 website.page 记录存储。


换句话说,website.page 专用于可在网站构建器中直接编辑的静态内容;动态列表页由其他机制生成,不归入此模型管理。

模型中哪些字段最关键(快速导览)


下面列出与 website.page 最相关、在实际工作中最常用的字段,了解它们能更高效地管理页面与SEO。


1. 页面标题(name)

字段类型:Char。代表页面的标题,前端浏览器标签、导航菜单和搜索结果中显示的名称通常来自它。该值源自关联的 ir.ui.view。


2. 页面路径(url)

字段类型:Char。表示页面的访问路径,必须以斜杠开头,例如 /contact 或 /about-us,用户通过此路径访问页面。


3. 视图引用(view_id)

字段类型:Many2one(ir.ui.view)。必填。指向包含 QWeb 模板(arch)与 key 的视图。删除该视图会级联影响页面。


4. 所属网站(website_id)

字段类型:Many2one(website)。表示页面属于哪个网站;在多站点环境下可设为特定站点或留空以共享。


5. 是否发布(is_published)

字段类型:Boolean。控制页面是否对访客可见。未发布的页面通常会返回 404 或重定向,适用于临时隐藏内容。


6. 是否允许搜索引擎索引(website_indexed)

字段类型:Boolean。用于控制是否允许搜索引擎抓取该页,例如感谢页应关闭索引。


7. 发布日期(date_publish)

字段类型:Datetime。记录页面何时发布,常用于定时发布和前端显示上线时间。


8. 是否显示页头(header_visible)

字段类型:Boolean。用于决定是否渲染网站通用头部,适合需要沉浸式或全屏场景的落地页。


9. 是否显示页脚(footer_visible)

字段类型:Boolean。与 header_visible 类似,用于在特定页面隐藏或展示全站页脚。


10. 是否为主页(is_homepage)

字段类型:Boolean(计算字段)。当该页被设置为站点首页时为真,每个站点仅能有一个首页。


11. 是否可见(is_visible)

字段类型:Boolean(计算字段)。综合发布状态、时间与可见性规则,表示当前该页是否应当向用户展示。


12. 菜单项关联(menu_ids)

字段类型:One2many(website.menu)。列出链接到此页面的菜单项,一个页面可以在多个菜单中出现或不出现在任何菜单。


13. 创建时间(create_date)

字段类型:Datetime。记录创建时间,由 Odoo 自动维护,便于审计与报表。


14. 修改时间(write_date)

字段类型:Datetime。记录最后一次修改时间,同样由系统维护,用来追踪更新。


15. 模板内容(arch)

字段类型:Text。实际的 QWeb XML 模板保存在关联的 ir.ui.view 中,包含页面结构与可复用片段,网站构建器可直接编辑它。


16. 视图唯一键(key)

字段类型:Char。视图的唯一标识符,常用于模块 XML 文件与继承,通常格式为 module.view_name。


17. 视图类型(type)

字段类型:Selection。视图类型,对于网站页面应为 qweb,其他场景有 form、tree 等。


18. 是否激活(active)

字段类型:Boolean。软删除标志,来自 ir.ui.view;当为 False 时表示已归档,归档页面不会被访问。


19. SEO 标题(website_meta_title)

字段类型:Char。可覆盖默认标题,用于搜索引擎结果的展示,直接影响点击率与可见性。


20. SEO 描述(website_meta_description)

字段类型:Text。搜索结果中显示的摘要建议控制在 150–160 字符之内,以获得最佳展示效果。


21. 关键词(website_meta_keywords)

字段类型:Char。逗号分隔的关键词列表。现代 SEO 权重有限,但某些系统仍会读取。


22. 头部覆盖(header_overlay)

字段类型:Boolean。是否让头部覆盖内容区域,适用于横幅式(hero)页面,使头部悬浮在视觉层上。


23. 头部配色(header_color)

字段类型:Selection。控制头部色系(如 transparent、light、dark),影响可读性与视觉对比。


24. 访问可见性(visibility)

字段类型:Selection。访问控制选项:公开、登录用户、特定用户组或需要密码,适用于会员区或内部文档。


25. 重定向类型(redirect_type)

字段类型:Selection。当 URL 变更时选择 301(永久)或 302(临时)重定向,或不重定向,对 SEO 很重要。

企业如何在日常流程中使用该模型


网站页面在业务中的常见用途(概览)

落地页与活动推广:营销团队会为每次活动新建落地页,作为单独的 website.page 记录,控制 URL、上线时间与内容,配合 date_publish 实现定时发布。


公司官网的静态页面管理

企业的“关于我们”“隐私政策”“服务条款”等典型静态内容通常以 website.page 维护,更新频率低但对合规与品牌一致性很重要,其菜单位置通过 menu_ids 管理。


感谢页与提交确认页的处理

例如“表单已提交”或“预约成功”类页面也用 website.page 表示,但应将 website_indexed 设为 False,避免被搜索引擎收录。


多站点与本地化策略

在多网站部署下,通过 website_id 指定归属站点;若需多语言或地域化内容,可为不同站点复制并本地化页面。


受限内容与会员区实现方式

利用 visibility 字段可以把页面限定为登录用户或指定用户组访问,适合企业内部文档、付费会员内容或受控资源。

开发者如何扩展和定制 website.page


开发者扩展的常见思路与实践


模型继承是扩展 website.page 的主要手段

在自定义模块中使用 _inherit = 'website.page' 来新增字段或覆盖方法。保持扩展模块独立有利于后续升级与维护。


新增字段的设计要点

在继承模型中声明新的 Odoo 字段(Char、Many2one、Boolean、Integer、Text、Selection 等),并为多站点考虑是否需要 website-dependent 字段。


通过 Python 覆盖与扩展业务逻辑

可覆盖 create、write、unlink 等方法来加入自定义逻辑,记得调用 super() 保持链式行为;对 view_id 的级联删除需特别小心,避免无意丢失视图内容。


使用 Odoo Studio 的取舍

Odoo Studio 更适合快速布局与字段增删,便捷但在复杂逻辑或需对接外部 API 的场景下,自建模块更可控也更利于版本管理。

实务建议与 SEO 优化要点


  • URL 规范化:使用友好且一致的 slug,同时避免特殊字符并用连字符分隔单词以提升可读性与 SEO 效果。
  • 对感谢页与内部页关闭索引(website_indexed=False),以免造成低价值页面占据搜索结果。
  • 更改页面 URL 时务必配置合适的重定向(301/302),保护已有的 SEO 权重并避免链接失效。
  • 每个对外公开页面都应填写 website_meta_title 与 website_meta_description,以提升搜索展现与点击率。
  • 通过 API 或 XML-RPC 创建页面的正确顺序是:先创建 ir.ui.view(type 为 qweb 并确保 key 唯一),再创建 website.page 并指向该 view_id,这样可以避免关系错误。

新手常犯的错误与坑位提醒


  • 常见错误一:没有先创建或关联合法的 view_id。必须确保视图存在且类型为 qweb。
  • 常见错误二:URL 未以斜杠开头。Odoo 期待形如 /contact 的路径,缺少斜杠会导致访问异常。
  • 常见错误三:忘记对感谢/确认页关闭索引,导致不需要的页面被搜索引擎抓取,稀释站点关键词权重。
  • 常见错误四:修改 URL 却未配置重定向,旧链接因此失效,搜索引擎收录和外部引用会遭到破坏。
  • 常见错误五:直接修改由网站构建器改动过的视图 arch 时,可能受 ir.model.data 中 noupdate 标志影响,导致你的 XML 更改无法生效,必要时需调整该标志或通过正确的升级路径更新视图。

总结:掌握 website.page 带来的实际好处


小结:website.page 是 Odoo 管理静态页面的核心模型。它保存页面的元数据、访问路径与发布设置,而页面的具体模板与 HTML 内容保存在相应的 ir.ui.view 中。


掌握 website.page 的字段含义与其与 ir.ui.view 的继承关系,会让你在配置站点、定制功能或做系统集成时少走弯路。无论你是实施顾问还是后端开发者,理解这一模型能提高效率并降低出错率。

需要 Odoo 实施支持吗?联系我们获取帮助


关于我们:Dasolo 专注于 Odoo 的实施、定制与性能优化,尤其擅长 API 集成与模型级别的开发工作。我们对 Odoo 的数据结构与诸如 website.page 这样的关键模型有深入实战经验。


如果你在 Odoo 实施、定制网站页面或系统集成方面需要支持,我们可以提供咨询、开发与实施服务。 预约产品演示 与我们沟通你的项目需求与实施计划。

解读 Odoo Website.page 模型:网站页面架构详解
Dasolo 2026年3月11日
分析这篇文章
登录 留下评论