介绍
在 Odoo 中,模型定义了数据在数据库中的结构和存储方式。您处理的每一条业务数据都存在于一个模型中。
理解 Odoo 模型对于开发人员和功能顾问都是至关重要的。模型是 Odoo 数据架构的基础。它们定义了 Odoo 字段、关系和业务逻辑。
本文重点介绍网站模型。它驱动 Odoo 中的网站配置。无论您是在构建多网站设置、定制品牌,还是与外部系统集成,您都将使用该模型。
什么是网站模型
该网站模型表示Odoo中的网站配置。此模型在Odoo中存储定义网站外观和行为的所有内容:域名、语言、品牌、社交链接和菜单结构。
它是网站应用的一部分,被每个Odoo网站使用。在多网站设置中,您将拥有多个网站记录。每个记录可以拥有自己的域名、公司、语言和主题。
Odoo中的其他模型通过website_id字段引用网站模型。许多Odoo模型都有一个website_id字段,以将内容范围限制到特定网站。这就是Odoo模型继承和Odoo中的api模型如何协同工作的方式。
模型中的关键字段
以下是网站模型中最重要的Odoo字段。理解这些将帮助您有效地处理网站配置。
1. name
类型:字符。必填。此字段存储网站名称。它在后台切换器和配置屏幕中显示。它是网站的主要标识符。
2. sequence
类型:整数。默认值10。当存在多个网站时,控制显示顺序。较低的值优先显示。
3. domain
类型:字符。网站域名(例如:https://www.mydomain.com)。如果缺少,Odoo会添加https。必须是唯一的。用于路由和SEO。
4. company_id
类型:多对一(res.company)。必填。将网站链接到Odoo公司。在多公司设置中,每个网站仅显示与公司相关的数据。
5. language_ids
类型:多对多(res.lang)。此网站上可用的语言。访客可以在它们之间切换。默认为所有已安装的语言。
6. language_count
类型:整数。计算得出。语言的数量。用于显示和过滤。
7. default_lang_id
类型:一对多(res.lang)。必填。访客首次访问时的默认语言。必须在 language_ids 中。
8. auto_redirect_lang
类型:布尔值。默认值为真。当启用时,访客会被重定向到他们的浏览器语言(如果可用)。
9. cookies_bar
类型:布尔值。当为真时,显示一个 cookies 条。对于 GDPR 合规性很有用。Odoo 可以自动创建一个 cookie 政策页面。
10. logo
类型:二进制。网站徽标。显示在页眉和其他地方。如果未设置,则默认为 Odoo 徽标。
11. favicon
类型:二进制。浏览器标签中显示的 favicon。Odoo 将其调整为 256x256。
12. social_twitter
类型:字符。Twitter/X 账户 URL。默认来自公司。用于页脚和社交分享。
13. social_facebook
类型:字符。Facebook 账户 URL。与其他社交字段相同的模式。
14. social_linkedin
类型:字符。LinkedIn 账户 URL。
15. social_instagram
类型:字符。Instagram 账户 URL。
16. social_youtube
类型:字符。YouTube 账户 URL。
17. social_github
类型:字符。GitHub 账户 URL。
18. social_tiktok
类型:字符。TikTok 账户 URL。
19. social_default_image
类型:二进制。社交分享的默认图像。设置时覆盖徽标。用于 Open Graph 和 Twitter 卡片。
20. google_analytics_key
类型:字符。Google Analytics 密钥。用于跟踪。Odoo 在配置时注入脚本。
21. google_maps_api_key
类型:字符。Google Maps API 密钥。用于地图和位置功能。
22. user_id
类型:Many2one (res.users)。必填。此网站的公共用户。用于门户访问和匿名访客。默认值来自公司。
23. cdn_activated
类型:布尔值。当为真时,静态资产从CDN提供。提高性能。
24. cdn_url
类型:字符。CDN基础URL。当cdn_activated为真时使用。
25. cdn_filters
类型:文本。用于重写的URL的正则表达式模式。默认为静态路径。
26. menu_id
类型:Many2one (website.menu)。计算得出。主菜单。指向此网站的根菜单项。
27. homepage_url
类型:字符。主页路径(例如 /contactus 或 /shop)。必须以斜杠开头。
28. custom_code_head
类型:Html。注入到头部的自定义代码。用于分析、脚本或元标签。
29. custom_code_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
类型:日期时间。记录创建的时间。由Odoo自动管理。
34. write_date
类型:日期时间。记录最后修改的时间。同样由系统自动管理。
该模型在业务工作流程中的使用方式
1. 多网站和本地化
拥有多个品牌或地区的公司为每个网站创建一个网站记录。每个网站都有自己的域名、语言和内容。页面、博客和产品上的 website_id 字段将数据范围限制到正确的网站。
2. 品牌和身份
每个网站的徽标、网站图标和社交链接都是单独配置的。市场营销团队在重新品牌时更新这些内容。social_default_image 字段改善了链接分享时的外观。
3. 语言和 SEO
language_ids 和 default_lang_id 控制可用的语言。auto_redirect_lang 改善国际访客的用户体验。正确的配置有助于 SEO 和 hreflang。
4. 性能和 CDN
当流量增长时,cdn_activated 和 cdn_url 将静态资产卸载到 CDN。cdn_filters 定义哪些 URL 被重写。
5. 合规性和分析
cookies_bar 启用 cookie 同意横幅。google_analytics_key 和 custom_code_head 注入跟踪代码。robots_txt 控制爬虫访问。
开发人员如何扩展该模型
开发人员使用多种模式扩展网站模型。Odoo 模型继承是主要机制。
模型继承
使用 _inherit = 'website' 来扩展模型。添加新的 Odoo 字段,重写方法或添加约束。Odoo 中的继承模型将您的更改保存在一个单独的模块中,以便于升级。
添加字段
在您的继承模型中定义新的 Odoo 字段。使用正确的字段类型:Char、Many2one、Boolean、Integer、Text、Selection。考虑多网站逻辑下的网站相关字段。
Python 扩展
重写 create、write 或 unlink 来添加逻辑。使用 super() 调用原始方法。在以编程方式创建网站时,注意 user_id 和 company_id。
Odoo Studio
Odoo Studio 允许您无需代码添加字段。适合快速定制。对于复杂逻辑或 API 驱动的配置,自定义模块更易于维护。
最佳实践
- 在生产中为每个网站设置域。这有助于路由和 SEO。
- 保持 default_lang_id 在 language_ids 内。Odoo 在更改时会验证这一点。
- 使用 custom_code_head 和 custom_code_footer 来添加第三方脚本。避免修改核心模板。
- 在构建 API 集成时,使用 XML-RPC 或 JSON-RPC API。网站模型是完全公开的。在同步内容时正确映射 website_id。
- 对于自定义字段,使用
x_前缀或模块前缀,以避免与未来的 Odoo 版本发生冲突。
常见错误
- 创建重复的域名。域名字段具有唯一约束。
- 在通过 API 创建网站时忘记设置 user_id。该字段是必需的。
- 设置 homepage_url 时未加前导斜杠。Odoo 会进行验证并抛出错误。
- 在没有有效 cdn_url 的情况下启用 cdn_activated。资产可能无法加载。
- 重写核心方法而不调用 super()。这可能会破坏其他模块或未来的升级。
结论
网站模型是 Odoo 中站点配置的核心。它存储域名、语言、品牌和行为。理解其 Odoo 字段以及其他模型如何引用它将帮助您有效配置、定制和集成 Odoo 网站。
无论您是映射多站点需求的功能顾问,还是构建自定义模块的开发人员,扎实掌握网站模型将节省时间并防止错误。
需要帮助进行 Odoo 实施吗?
Dasolo 帮助公司实施、定制和优化 Odoo。我们专注于 API 集成和 Odoo 开发。我们的团队在 Odoo 数据架构和网站等模型方面拥有深厚的经验。
如果您需要帮助进行 Odoo 实施、多网站设置或集成,我们随时为您提供帮助。 预约演示 以讨论您的项目。