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

Модель website.page: как устроены страницы сайта в Odoo

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

Введение


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


Понимание моделей Odoo важно и для разработчиков, и для бизнес-аналитиков: именно модели задают поля, связи и встроенную логику, на которых строится вся система.


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

Что такое модель website.page


Модель website.page представляет статические страницы сайта в приложении Website. Сюда попадают страницы, создаваемые через конструктор: «О компании», «Контакты», отдельные лендинги и др.


Технически website.page использует наследование моделей Odoo: записи связаны с ir.ui.view через механизм _inherits. Каждая страница хранит ссылку на view, где лежит QWeb-шаблон (arch) и метаданные.

Динамический контент — разделы магазина, ленты блога и похожие — формируется иначе и не завязан напрямую на website.page.


Такие динамические страницы не сохраняются как записи website.page. Эта модель предназначена именно для статических страниц, которые вы создаёте и редактируете через визуальный редактор.

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


Ниже перечислены важнейшие поля website.page, которые полезно знать при работе с контентом и настройкой сайта.


1. name

Тип: Char. Заголовок страницы — тот текст, что попадает в таб браузера, меню и результаты поиска. Значение берётся из связанного ir.ui.view.


2. url

Тип: Char. Путь страницы в URL. Должен начинаться со слэша, например /contact, /about-us — именно по этому пути посетители попадают на страницу.


3. view_id

Тип: Many2one (ir.ui.view). Обязательное поле. Указывает на QWeb-view с содержимым страницы. Представление хранит arch (XML) и key. При удалении представления запись страницы удаляется каскадно.


4. website_id

Тип: Many2one (website). Сайт, которому принадлежит страница. В мультисайтовых установках страницы могут привязываться к конкретному сайту или быть общими (когда поле пусто).


5. is_published

Тип: Boolean. Отвечает за видимость страницы для посетителей. Снятая с публикации страница возвращает 404 или делает редирект — удобно скрывать контент без удаления.


6. website_indexed

Тип: Boolean. Управляет индексацией страницы поисковиками. Для страниц благодарности или внутренних материалов ставьте False, чтобы они не появлялись в результатах поиска.


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. Когда запись была создана. Поле заполняется автоматически и полезно для аудита и отчётности.


14. write_date

Тип: Datetime. Когда запись была в последний раз изменена. Тоже заполняется системой — помогает отслеживать обновления контента.


15. arch

Тип: Text. QWeb-шаблон в XML — хранится в связанном ir.ui.view. Содержит HTML-структуру и сниппеты Odoo, редактируется через конструктор сайта.


16. key

Тип: Char. Уникальный идентификатор представления. Используется в XML-модулях и при наследовании. Обычно имеет формат module.view_name.


17. type

Тип: Selection. Тип представления. Для страниц сайта это всегда qweb. Другие варианты — form, list, tree и т.д.


18. active

Тип: Boolean. Флаг «мягкого удаления». Когда False — запись архивируется и не отдаётся посетителям. Поле приходит из ir.ui.view.


19. website_meta_title

Тип: Char. SEO-заголовок страницы. Перекрывает стандартный title в результатах поиска — важно для видимости в поисковиках.


20. website_meta_description

Тип: Text. SEO-описание, которое показывается в выдаче. Рекомендуется держать в пределах 150–160 символов для корректного отображения.


21. website_meta_keywords

Тип: Char. Ключевые слова. Сейчас имеют меньше веса для SEO, но иногда используются внешними системами — вводите через запятую.


22. header_overlay

Тип: Boolean. Накладывать ли шапку поверх содержимого. Применяется для hero-блоков, где шапка размещается поверх баннера.


23. header_color

Тип: Selection. Схема цвета шапки — например transparent, light, dark. Влияет на контрастность и читаемость элементов.


24. visibility

Тип: Selection. Настройки доступа: Public, Signed In, Restricted Group, With Password. Определяет, кто может просматривать страницу.


25. redirect_type

Тип: Selection. Тип редиректа при смене URL: 301 (постоянный), 302 (временный) или None. Ключевой момент для сохранения SEO-параметров при переезде страниц.

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


1. Лендинги и маркетинговые кампании

Маркетологи используют website.page для создания лендингов кампаний. Каждая посадочная страница — отдельная запись: здесь задают URL, содержимое и дату публикации; отложенная публикация делается через date_publish.


2. Корпоративные страницы

Страницы «О компании», «Контакты», правила и политики обычно хранятся как website.page: их создают один раз и обновляют по мере необходимости; размещение в меню настраивается через menu_ids.


3. Страницы благодарности и подтверждения

Страницы типа «Форма отправлена» лучше делать website.page и отключать индексацию (website_indexed=False), чтобы они не попадали в поисковую выдачу.


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

В мультисайтовых решениях поле website_id определяет, на каком сайте показывать страницу; при необходимости страницы дублируют и локализуют под каждый сайт.


5. Закрытый доступ и gated-контент

Поле visibility позволяет делать страницы только для авторизованных пользователей или для определённых групп — удобно для закрытых разделов и внутренней документации.

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


Разработчики расширяют website.page несколькими стандартными способами. Основной инструмент — наследование моделей Odoo.


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

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


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

Объявляйте дополнительные поля в унаследованной модели, подбирая корректный тип: Char, Many2one, Boolean, Integer, Text, Selection. Для мультисайтовых данных учитывайте поддержку website-dependent полей.


Расширения на Python

Переопределяйте методы create, write, unlink, добавляя свою логику, но не забывайте вызывать super(). Будьте внимательны с полем view_id и каскадным удалением представлений.


Odoo Studio

Odoo Studio подходит для быстрой донастройки страниц и верстки без кода. Но для сложной логики, интеграций и поддержки через API лучше писать собственные модули.

Рекомендации и правила работы


  • Используйте человекопонятные слаги в URL: без пробелов и специальных символов, с дефисами между словами для читаемости и SEO.
  • Отключайте индексацию (website_indexed=False) для страниц благодарности, подтверждений и внутренних материалов.
  • При смене URL обязательно настраивайте редирект (301 или 302), чтобы не потерять SEO-позиции и не допускать битых ссылок.
  • Заполняйте website_meta_title и website_meta_description для публичных страниц — это прямо влияет на видимость в поисковых системах.
  • Если создаёте страницы через API или XML-RPC, сначала создайте ir.ui.view, затем сайт-страницу с view_id. Убедитесь, что view имеет type = qweb и уникальный key.

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


  • Создание website.page без действительного view_id. Представление должно существовать и иметь тип qweb — иначе страница не будет корректно работать.
  • Использование URL без начального слэша. Odoo ожидает путь вида /contact, а не contact — иначе маршрутизация не сработает.
  • Забыть отключить индексацию для thank-you-страниц. Такие страницы могут попасть в выдачу и испортить релевантность сайта.
  • Смена URL без настройки редиректа. Старые ссылки перестают работать, а поисковые системы теряют связь с контентом.
  • Изменение arch у представления, которое редактировалось через конструктор. Флаг noupdate в ir.model.data может блокировать применение XML-изменений — при необходимости сбросьте его.

Итоги


Модель website.page — центральный элемент для управления статическими страницами в Odoo: она хранит метаданные, URL и настройки публикации, а само содержимое лежит в связанном ir.ui.view.


Разобравшись в полях модели и её наследовании от ir.ui.view, вы сможете лучше настраивать, расширять и интегрировать сайты на Odoo. Это знание сэкономит время и сократит число ошибок как для консультантов, так и для разработчиков.

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


Компания Dasolo помогает предприятиям внедрять, настраивать и оптимизировать Odoo. Мы специализируемся на интеграциях через API и разработке под Odoo, глубоко понимая архитектуру данных и модели вроде website.page.


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

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