跳至内容

Odoo Website 模型详解:深入解析网站配置架构

面向开发者与功能顾问的 Odoo 网站架构全指南:从页面构成到模板、路由与数据绑定的实战解析
2026年3月11日
Odoo Website 模型详解:深入解析网站配置架构
Dasolo
| 还没有评论

导读 — 网站配置的核心概览


language_count:计算字段,记录可用语言数量,便于展示与筛选。


default_lang_id:Many2one 指向 res.lang,必填。访客首次访问时的默认语言,必须包含在 language_ids 中。


auto_redirect_lang:布尔,默认开启。若启用,访客会被重定向到浏览器语言对应的站点版本,提升国际化体验。

网站模型到底是什么?简单说,它就是把网站在 Odoo 中的外观、语言和路由等所有配置一一记录在数据库里的“配置档案”。每当你在后台切换站点、控制访问或同步内容时,实际上都是在操作这个模型里的记录。


cookies_bar:布尔,开启后在前端展示 Cookie 同意条,便于合规(例如 GDPR)。系统可以自动生成 Cookie 政策页面。


logo:二进制图片,站点 Logo,默认使用 Odoo Logo,出现在页眉和分享卡片等位置。


favicon:二进制图片,浏览器标签页图标,Odoo 会按 256×256 调整大小。

模型里有哪些关键字段?下面列出常用且影响最大的字段类型与用途,掌握它们能让你更快上手站点管理与二次开发。


社交账号字段(social_twitter / social_facebook / social_linkedin / social_instagram / social_youtube / social_github / social_tiktok):字符型,填写对应平台链接,用于页脚与分享。


social_default_image:二进制,社交分享默认图,优先于 Logo,用于 Open Graph / Twitter 卡片。

google_analytics_key:字符型,填入 GA 跟踪号后系统会注入脚本进行流量追踪。


google_maps_api_key:字符型,用于地图与地理位置功能。

user_id:Many2one 指向 res.users,必填。站点的“公共用户”账号,用于匿名或门户访问,通常从公司默认带入。


cdn_activated:布尔,启用后静态资源可走 CDN,提升加载速度与分发能力。

cdn_url:字符型,CDN 的基础 URL,在 cdn_activated 打开时生效。


cdn_filters:文本,正则表达式列表,指定哪些静态路径需要重写为 CDN 地址。

menu_id:Many2one 指向 website.menu,计算字段,指向站点的主菜单根节点。


homepage_url:字符型,主页路径(例如 /shop 或 /contact),必须以斜线开头。

custom_code_head / custom_code_footer:Html 字段,分别注入到 head 与 footer,适合放第三方脚本、meta 或聊天插件。


robots_txt:Html,自定义 robots.txt 内容,用于搜索爬虫控制与 SEO 策略。

theme_id:Many2one 指向 ir.module.module,记录所安装的主题模块。


auth_signup_uninvited:选择字段,b2b(仅受邀)或 b2c(允许自由注册),控制访客是否可以自行注册。

create_date / write_date:记录创建与最后修改时间,由系统自动维护。


网站模型在业务流程中的典型用途

多站点与本地化运营:公司旗下有多个品牌或地区站点时,会为每个站点创建独立记录,各自维护域名、语言和内容。产品、页面、博客等带有 website_id 字段以便把内容限定到对应站点。


品牌与营销管理:Logo、favicon 与社交链接按站点配置,营销团队可在后台单独调整,social_default_image 能提升链接在社交平台上的展示效果。

国际化与 SEO:通过 language_ids、default_lang_id 和 auto_redirect_lang 管理站点语言环境,有助于正确生成 hreflang、提升用户体验与搜索引擎索引质量。


性能优化与 CDN:当访问量增长时,开启 cdn_activated 并配置 cdn_url 可以把静态资源交给 CDN 加速,配合 cdn_filters 精确控制要重写的 URL。

合规与数据追踪:cookies_bar、google_analytics_key、custom_code_head/footer 与 robots_txt 等字段一起,帮助你实现隐私合规、流量分析与爬虫管理。


开发者如何扩展网站模型(实务要点)

模型继承是主要手段:在自定义模块内使用 _inherit = 'website' 来扩展;你可以新增字段、重写方法或添加约束,把修改放在独立模块中便于升级与维护。


添加字段的建议:为新需求定义合适的字段类型(Char、Many2one、Boolean、Integer、Text、Selection 等),如果涉及多站点逻辑要设计成 website 级别可区分的字段。对定制字段请使用模块前缀或 x_ 前缀以避免命名冲突。

覆盖 Python 方法时的注意:若需在 create、write 或 unlink 中加入自定义逻辑,务必调用 super() 保持原有行为;同时留意 company_id 与 user_id 的默认值与权限问题,尤其是通过 API 批量创建站点时。


使用 Odoo Studio:Studio 非常适合快速添加字段或小范围定制,但对于需要复杂逻辑、自动化或与外部系统对接的场景,建议通过自定义模块来实现更可维护的改动。

与外部系统集成的实践:通过 XML-RPC 或 JSON-RPC API 同步站点配置与内容时,确保正确映射 website_id、language_id 等关键字段,避免内容跑到错误的站点下。


最佳实践清单

上线前为每个生产站设置正确的域名,保证路由与 SEO 表现。


确保 default_lang_id 在 language_ids 范围内,系统会对此进行校验。

把第三方脚本放到 custom_code_head/footer,而不是直接改内核模板,便于升级与回退。


API 同步时明确传递 website_id,避免把内容导入到默认或错误的站点记录。

自定义字段请使用带模块前缀的名称(或 x_ 前缀),减少与未来 Odoo 版本字段的冲突风险。


常见错误与陷阱(以及如何避免)

重复域名:domain 字段有唯一性约束,创建前请确认域名未被占用。


通过 API 创建网站忘记设置 user_id:此字段必填,缺失会导致创建失败或权限异常。

homepage_url 未以斜线开头:Odoo 会验证并抛出错误,记得以“/”开头。


开启 cdn_activated 但未配置 cdn_url:会导致静态资源无法正常加载,应同时配置两项并测试。

覆盖核心方法却不调用 super():可能破坏其他模块逻辑或影响后续升级,覆盖时应谨慎并保留原行为。


总结

网站模型是 Odoo 网站配置的中枢,承载域名、语言、主题、社交设置与行为控制。熟悉这些字段及其与其他模型的关联,能让你更高效地配置、定制与对接站点。


无论你是负责业务需求的顾问,还是编写扩展的开发者,掌握网站模型的设计与实践可以显著减少实施风险与返工。

需要帮忙实施 Odoo?我们可以协助


Dasolo 专注于 Odoo 实施与二次开发,尤其擅长 API 集成与复杂站点结构的落地。我们的团队熟悉 Odoo 数据架构及 website 等关键模型,能把项目按计划推进并降低技术债务。

如果你在 Odoo 的多站点部署、主题定制或系统对接上遇到挑战,欢迎联系我们获取支持。


预约演示

与我们讨论你的项目需求。


24. cdn_url

类型:字符。用于配置静态资源的 CDN 根地址。当 cdn_activated 为 True 时,站点会把图片、CSS、JS 等静态文件指向此域名以加速分发。


25. cdn_filters

类型:文本。写入用于匹配需要改写为 CDN 的 URL 的正则表达式。默认通常覆盖 /static/ 等路径,可按需求扩展到图片、字体或第三方托管资源。


26. menu_id

类型:Many2one(website.menu)。计算字段,指向该网站的主导航根节点。用于生成顶级菜单、面包屑和菜单权限范围。


27. homepage_url

类型:字符。网站首页的相对路径(例如 /contactus 或 /shop)。必须以斜杠开头,否则在保存时会触发验证错误。


28. custom_code_head

类型:Html。在页面 中注入的自定义代码片段,常用于添加统计、验证 meta、第三方脚本或自定义样式表。


29. custom_code_footer

类型:Html。在页面底部(footer 前)注入的 HTML/脚本,适合放置聊天窗口、延迟加载的跟踪脚本或像素代码。


30. robots_txt

类型:Html。自定义 robots.txt 的内容,用来控制搜索引擎抓取行为和索引策略,便于 SEO 管理。


31. theme_id

类型:Many2one(ir.module.module)。当前安装并应用于该网站的主题模块,决定模板、样式与前端组件。


32. auth_signup_uninvited

类型:选择。值为 b2b(仅受邀注册)或 b2c(允许自由注册)。控制访客是否可以在没有邀请的情况下自助创建账号。


33. create_date

类型:Datetime。记录创建时间,由 Odoo 自动维护,用于审计与同步判断。


34. write_date

类型:Datetime。记录最后一次修改时间,同样由系统维护,方便追踪变更历史。

网站在 Odoo 中的常用字段速览


1. Multi-Website and Localization

当公司拥有多个品牌或地区站点时,通常为每个站点建立一条 website 记录。每条记录管理独立的域名、语言与内容,通过页面、博客和商品中的 website_id 字段把数据限制到对应站点,保证内容隔离与本地化发布。


2. Branding and Identity

网站级别管理品牌元素:Logo、favicon 以及社媒链接都应按站点配置。营销或品牌团队在改版时会更新这些字段,其中 social_default_image 影响链接在社交平台分享时的预览效果,直接关系到点击率。


3. Language and SEO

language_ids 和 default_lang_id 控制网站可用语言与默认语言。启用 auto_redirect_lang 可以根据访客浏览器语言自动跳转,提升国际用户体验,并配合正确的 hreflang 配置改善搜索引擎对多语言页面的索引。


4. Performance and CDN

当访问量上升,需要用 CDN 减轻源站负载时,开启 cdn_activated 并配置 cdn_url,将静态资源分流到 CDN 节点。通过 cdn_filters 指定哪些路径需要改写,避免把动态或私有资源错误发送到 CDN。


5. Compliance and Analytics

cookies_bar 用于打开 Cookie 同意条,满足合规要求;google_analytics_key 与 custom_code_head 可注入分析或合规脚本;robots_txt 则控制搜索引擎抓取权限,是 SEO 与隐私策略的重要工具。

name:站点名称,必填,用于后台切换和配置界面,是站点的基本标识。


Developers extend the website model using several patterns. Odoo model inheritance is the main mechanism.


Model Inheritance

在 Odoo 中通过设置 _inherit = 'website' 来扩展网站模型。你可以新增字段、重写方法或加入约束,把改动放在自定义模块里以便升级时与核心隔离。


Adding Fields

在继承模型中定义新的 Odoo 字段时,务必选对字段类型(Char、Many2one、Boolean、Integer、Text、Selection 等)。针对多站点场景,考虑把字段设为 website 依赖或加上条件逻辑以确保数据隔离。


Python Extensions

重写 create、write 或 unlink 方法可以加入业务逻辑,记得调用 super() 以保留原有行为。通过 API 批量创建网站时,要特别注意 user_id 与 company_id 的赋值,避免权限或归属问题。


Odoo Studio

Odoo Studio 提供了无需编码就能添加字段和界面的便捷方式,适合快速原型或小改动。但遇到复杂业务流程或需要 API 驱动的配置时,自建模块更利于长期维护与版本控制。

sequence:整数,默认 10。多个站点展示时用于排序,数值越小越靠前。


  • 在生产环境中为每个网站设置正确的 domain,有助于路由、证书配置和搜索引擎索引。
  • 确保 default_lang_id 已包含在 language_ids 列表中,Odoo 会在修改时进行校验,防止出现无效默认语言。
  • 把第三方脚本放到 custom_code_head 或 custom_code_footer 中,而不要直接改动核心模板;这样可以降低升级风险并集中管理外部集成代码。
  • 构建 API 集成时,使用 XML-RPC 或 JSON-RPC 与 Odoo 通信。网站模型在 API 中是可访问的,注意在同步内容时正确映射 website_id,避免跨站点污染数据。
  • 为自定义字段使用 x_ 前缀或加模块前缀命名,以免将来与 Odoo 新版本的字段名冲突并提高可维护性。

domain:站点域名(示例 https://www.example.com),系统会补全 https,且必须唯一,用于路由与 SEO。


  • 域名重复创建会触发唯一性约束,因此在导入或批量创建时先检查现有 domain 以避免冲突。
  • 通过 API 创建网站时忘记设置 user_id 会导致校验失败或权限异常,记得指定创建者或系统管理员账户。
  • 设置 homepage_url 时务必以斜杠开头,否则 Odoo 会验证失败并报错。
  • 启用 cdn_activated 却没有配置有效的 cdn_url 会导致静态资源加载失败或路径指向错误,务必测试资源是否能正常访问。
  • 重写核心方法时如果不调用 super(),可能破坏其他模块的行为或影响未来升级的兼容性,应谨慎操作并做好回归测试。

company_id:Many2one 指向 res.company,必填。把站点和公司绑定,启用多公司时只显示对应公司的数据。


Website 模型是 Odoo 网站配置的核心:它保存域名、语言、品牌与行为设置。理解这些字段以及其他模型如何引用 website 对于正确配置、定制和集成 Odoo 网站至关重要。


无论你是负责需求梳理的顾问,还是编写定制模块的开发者,掌握 website 模型能显著减少沟通成本、降低出错率并加快实施进度。

language_ids:Many2many 指向 res.lang,定义站点支持的语言,默认包含已安装的语言,访客可切换。


Dasolo helps companies implement, customize, and optimize Odoo. We specialize in API integrations and Odoo development. Our team has deep experience with the Odoo data architecture and models like website.


如果你需要在 Odoo 上完成多站点部署、深度定制或 API 集成,我们可以提供咨询、开发与实施支持,帮助你把项目按时交付并保持可维护性。 预约演示 与我们讨论你的项目需求。

Odoo Website 模型详解:深入解析网站配置架构
Dasolo 2026年3月11日
分析这篇文章
登录 留下评论