Перейти к содержимому

Модель Website в Odoo: как устроена конфигурация сайта

Полное руководство по модели веб‑сайта в Odoo для разработчиков и функциональных консультантов
11 марта 2026 г. от
Модель Website в Odoo: как устроена конфигурация сайта
Dasolo
| Комментариев пока нет

Введение


В Odoo модель описывает формат хранения данных в базе — по сути это схема «чего и как» хранится. Любая бизнес‑информация, с которой вы работаете в системе, представлена записью в модели.


Разобраться в моделях Odoo важно как для разработчиков, так и для функциональных консультантов: именно модели формируют каркас данных. Они задают поля, связи между сущностями и центральную бизнес‑логику, от которой зависят интерфейсы и интеграции.


В этой статье мы концентрируемся на модели Website. Она отвечает за конфигурацию сайта в Odoo. Если вы настраиваете несколько сайтов, меняете фирменный стиль или подключаете внешние сервисы — вам неизбежно придётся работать с этой моделью.

Что такое модель Website в Odoo


Модель Website хранит параметры, определяющие внешний вид и поведение сайта: домен, доступные языки, фирменные знаки, ссылки в соцсетях и структуру меню — всё это содержимое одной записи website.


Website входит в приложение «Website» и используется каждой инстанцией сайта в Odoo. В сценариях «несколько сайтов» для каждого сайта создаётся своя запись с отдельным доменом, компанией, языками и темой.


Множество других моделей ссылаются на Website через поле website_id. Это стандартный способ привязки страниц, блогов или товаров к конкретному сайту и важная часть механики наследования моделей и api в Odoo.

Ключевые поля в модели Website


Ниже — основные поля модели Website. Понимание их назначения и типов поможет уверенно настраивать сайт и писать расширения.


1. name

Тип: Char. Обязательное. Хранит имя сайта — то, что видно в переключателе сайтов в бэкэнде и в настройках. Служит основным идентификатором для администратора.


2. sequence

Тип: Integer. По умолчанию 10. Определяет порядок отображения сайтов в списках: меньшие значения показываются раньше.


3. domain

Тип: Char. Домен сайта (пример: https://www.example.com). Odoo добавляет https при необходимости. Должен быть уникальным — используется для маршрутизации и SEO.


4. company_id

Тип: Many2one (res.company). Обязательное. Связывает сайт с компанией Odoo. В мульти‑компанийных конфигурациях сайт показывает данные только своей компании.


5. language_ids

Тип: Many2many (res.lang). Список языков, доступных на сайте. Посетитель может переключать язык. По умолчанию — все установленные языки.


6. language_count

Тип: Integer. Вычисляемое. Количество доступных языков — удобно для отображения и фильтрации.


7. default_lang_id

Тип: Many2one (res.lang). Обязательное. Язык по умолчанию при первом заходе посетителя. Должен входить в language_ids.


8. auto_redirect_lang

Тип: Boolean. По умолчанию True. При включённом значении посетитель автоматически перенаправляется на язык браузера, если он поддерживается.


9. cookies_bar

Тип: Boolean. Если включено — показывается баннер cookies. Удобно для соответствия требованиям GDPR; Odoo может автоматически создать страницу политики cookies.


10. logo

Тип: Binary. Логотип сайта, отображается в шапке и других местах. При отсутствии заданного логотипа используется стандартный логотип Odoo.


11. favicon

Тип: Binary. Фавикон для вкладки браузера. Odoo автоматически масштабирует изображение до 256×256.


12. social_twitter

Тип: Char. URL аккаунта в Twitter/X. По умолчанию подтягивается из компании. Используется в футере и при шаринге ссылок.


13. social_facebook

Тип: Char. URL Facebook — по той же логике, что и другие соц‑поля.


14. social_linkedin

Тип: Char. URL LinkedIn.


15. social_instagram

Тип: Char. URL Instagram.


16. social_youtube

Тип: Char. URL YouTube.


17. social_github

Тип: Char. URL GitHub.


18. social_tiktok

Тип: Char. URL TikTok.


19. social_default_image

Тип: Binary. Изображение по умолчанию для ссылок в соцсетях. При наличии перекрывает логотип и используется в Open Graph и Twitter Cards.


20. google_analytics_key

Тип: Char. Ключ Google Analytics для трекинга; Odoo вставляет соответствующий скрипт при конфигурации.


21. google_maps_api_key

Тип: Char. API‑ключ Google Maps для карт и геолокационных сервисов.


22. user_id

Тип: Many2one (res.users). Обязательное. Публичный пользователь сайта — используется для портала и анонимных визитов. Подстановки берутся из компании по умолчанию.


23. cdn_activated

Тип: Boolean. Если включено — статические ресурсы обслуживаются через CDN, что ускоряет загрузку.


24. cdn_url

Тип: Char. Базовый URL CDN — используется при включённом cdn_activated.


25. cdn_filters

Тип: Text. Регулярные выражения для выбора URL, которые нужно переписывать под CDN. По умолчанию настроены статические пути.


26. menu_id

Тип: Many2one (website.menu). Вычисляемое. Указывает на корневой элемент меню сайта.


27. homepage_url

Тип: Char. Путь главной страницы (пример: /contact или /shop). Должен начинаться со слэша.


28. custom_code_head

Тип: Html. Произвольный код, вставляемый в — удобно для аналитики, метатегов и сторонних скриптов.


29. custom_code_footer

Тип: Html. Произвольный код в футере — часто используется для виджетов чатов и дополнительного трекинга.


30. robots_txt

Тип: Html. Содержимое robots.txt для управления индексированием и доступом поисковых ботов.


31. theme_id

Тип: Many2one (ir.module.module). Установленная тема сайта.


32. auth_signup_uninvited

Тип: Selection. Значения: b2b (только по приглашению) или b2c (свободная регистрация). Управляет возможностью самостоятельной регистрации посетителей.


33. create_date

Тип: Datetime. Дата создания записи. Управляется автоматически.


34. write_date

Тип: Datetime. Дата последнего изменения записи. Также управляется системой.

Как модель Website используется в бизнес-процессах


1. Мультисайтовость и локализация

Для компаний с несколькими брендами или регионами каждый сайт оформляют отдельной записью Website: у каждого свой домен, набор языков и контент. Поле website_id на страницах, товарах и постах гарантирует, что контент показывается только на нужном сайте.


2. Брендинг и фирменный стиль

Логотип, фавикон и ссылки на соцсети настраиваются на уровне сайта. Маркетинг может быстро править эти поля при ребрендинге. Поле social_default_image особенно полезно — оно улучшает внешний вид ссылок при расшаривании.


3. Языки и SEO

language_ids и default_lang_id управляют доступными языками. auto_redirect_lang улучшает опыт международных пользователей. Правильная настройка помогает корректно формировать hreflang и повышать видимость в поиске.


4. Производительность и CDN

При росте трафика включение cdn_activated и указание cdn_url позволяет разгрузить сервер: статические файлы будут выдаваться через CDN. cdn_filters задаёт, какие URL переписываются.


5. Соответствие требованиям и аналитика

cookies_bar включает баннер согласия на cookies. google_analytics_key вместе с custom_code_head позволяют встроить любые счётчики. robots_txt даёт контроль над доступом краулеров.

Как разработчики расширяют модель Website


Разработчики расширяют модель Website разными приёмами, причём основное средство — наследование моделей Odoo.


Наследование модели

Для расширения используйте _inherit = 'website'. В новом модуле можно добавить поля, переопределить методы или добавить ограничения. Наследование сохраняет ваши изменения отдельно от ядра, что упрощает обновления.


Добавление полей

В наследующей модели объявляйте новые поля нужного типа: 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: модель Website полностью доступна. При синхронизации контента корректно мапьте website_id.
  • Для пользовательских полей добавляйте префикс x_ или используйте префикс вашего модуля, чтобы избежать коллизий с будущими релизами Odoo.

Типичные ошибки


  • Создание дублирующихся доменов. Поле domain имеет уникальное ограничение — повторять домен нельзя.
  • Забыть указать user_id при создании сайта через API — это обязательное поле и без него операция не пройдёт.
  • Указывать homepage_url без ведущего слэша. Odoo ожидает путь, начинающийся с / и в противном случае вернёт ошибку.
  • Включить cdn_activated, не задав cdn_url — в результате статические ресурсы могут не загрузиться.
  • Переопределять ключевые методы, не вызвав super() — это ломает логику других модулей и усложняет обновления.

Заключение


Модель Website — центральный элемент настройки сайта в Odoo: она хранит домен, языки, элементы брендинга и поведение сайта. Знание полей и связей с другими моделями поможет правильно конфигурировать, кастомизировать и интегрировать сайт.


Будь вы функциональный консультант, планирующий мультирегиональный ландшафт, или разработчик, пишущий модули — хорошее понимание модели Website сэкономит вам время и уменьшит число ошибок.

Нужна помощь с внедрением Odoo?


Dasolo помогает компаниям внедрять, настраивать и оптимизировать Odoo. Мы специализируемся на API‑интеграциях и разработке под Odoo, и хорошо знакомы со структурой данных и моделями вроде Website.


Если вам нужна помощь с внедрением Odoo, настройкой нескольких сайтов или интеграциями — мы готовы помочь. Записаться на демонстрацию чтобы обсудить ваш проект.

Модель Website в Odoo: как устроена конфигурация сайта
Dasolo 11 марта 2026 г.
Поделиться этой записью
Войти оставить комментарий