| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/website |
| GIT | |
| GIT | https://github.com/OCA/website.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/website/tree/11.0/website_multi_theme |
| VERSION | |
| VERSION | 1.6.1 |
| CATEGORY | |
| CATEGORY | Website |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), Onestein, IT-Projects LLC |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), Onestein, IT-Projects LLC |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, GitHub, Jairo Llopis, Ivan Yelizariev, OCA Transbot, oca-travis, Weblate |
| WEBSITE | |
| WEBSITE | https://www.tecnativa.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:24:02 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - website - web - base - web_editor - web_planner - http_routing - portal - base_setup - bus - web_tour |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES |
lessc sass scss |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_editor |
assets_editor | ir.ui.view | qweb | Inherits website.assets_editor |
assets_pattern |
Empty assets_frontend pattern | ir.ui.view | qweb | Inherits website.assets_frontend |
demo_page_view |
Multi website theme demo page | ir.ui.view | qweb | New |
layout_pattern |
Main layout | ir.ui.view | qweb | Inherits website.layout |
s_demo1 |
Demo Cat | ir.ui.view | qweb | New |
s_demo2 |
Demo Dog | ir.ui.view | qweb | New |
snippet_selection |
snippet_selection | ir.ui.view | qweb | Inherits website.snippets |
theme_demo_assets_frontend |
Demo multiwebsite theme | ir.ui.view | qweb | Inherits website.assets_frontend |
user_navbar |
user_navbar | ir.ui.view | qweb | Inherits website.user_navbar |
view_view_form_extend |
ir.ui.view | xpath | Inherits base.view_view_form | |
view_website_config_settings |
Add theme selector | res.config.settings | field | Inherits website.res_config_settings_view_form |
view_website_form |
website | xpath | Inherits website.view_website_form | |
website_menu_search |
website_menu_search | website.menu | search | New |
website_pages_tree_view |
website.page | xpath | Inherits website.website_pages_tree_view |
No new fields.
Public methods (1)create(self, vals)
No new fields.
Public methods (0)No public methods.
multitheme_copy_ids
One2many → ir.ui.view
help='Duplicates of this view'
readonly=True
string='Copies'
args: 'ir.ui.view', 'origin_view_id'
origin_view_id
Many2one → ir.ui.view
help='View from where this one was copied for multi-website'
readonly=True
string='Copied from'
args: 'ir.ui.view'
was_active
Boolean
help='Indicates if the view was originally active before converting the single website theme that owns it to multi website mode.'
readonly=True
get_related_views(self, key, bundles=False)
search(self, domain, offset=0, limit=None, order=None, count=False)
multi_theme_id
Many2one
related='website_id.multi_theme_id'
multi_theme_reload(self)
base_url
Char
multi_theme_id
Many2one → website.theme
comodel_name='website.theme'
default=<expr>
domain=[('has_assets', '=', True)]
help='Multiwebsite-compatible theme for this website'
string='Multiwebsite theme'
multi_theme_view_ids
One2many → ir.ui.view
comodel_name='ir.ui.view'
domain=[('origin_view_id', '!=', False), '|', ('active', '=', True), ('active', '=', False)]
help='Views generated by the multiwebsite theme just for this website'
inverse_name='website_id'
string='Multiwebsite views'
create(self, vals)
write(self, vals)
asset_ids
One2many → website.theme.asset
comodel_name='website.theme.asset'
help='Asset views that will be disabled by default and enabled only in websites that enable this theme in multiwebsite mode.'
inverse_name='theme_id'
string='Assets'
converted_theme_addon
Char
help='Name of the theme addon that is being converted from single to multi website mode.'
dependency_ids
Many2many → website.theme
help='If theme is splitted in different theme-modules, they should be in this list. "Default theme" should be here too in order to make some features (e.g. footer) work on each website independently'
string='Sub-themes'
args: 'website.theme', 'website_theme_dependency_rel', 'theme1', 'theme2'
has_assets
Boolean
compute='_compute_has_assets'
store=True
name
Char
required=True
translate=True
get_assets(self)
upstream_dependencies(self)
auto
Boolean
default=False
help='Created automatically from theme view'
string='Auto-generated'
name
Char
help='External ID of the assets view that inherits from `website.assets_frontend` and adds the theme requirements.'
name='Reference'
required=True
theme_id
Many2one → website.theme
comodel_name='website.theme'
ondelete='cascade'
required=True
string='Theme'
view_id
Many2one → ir.ui.view
comodel_name='ir.ui.view'
help='View that will be enabled when this theme is used in any website, and disabled otherwise. Usually used to load assets.'
string='Assets view'
view_priority
Integer
readonly=True
related='view_id.priority'
store=True
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/website |
| GIT | |
| GIT | https://github.com/OCA/website.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/website/tree/10.0/website_multi_theme |
| VERSION | |
| VERSION | 1.4.0 |
| CATEGORY | |
| CATEGORY | Website |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), IT-Projects LLC |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), IT-Projects LLC |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, GitHub, Jairo Llopis, Ivan Yelizariev, Dave Lasley, oca-travis, Rafael Blasco |
| WEBSITE | |
| WEBSITE | https://www.tecnativa.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:20:02 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - website - web - base - web_editor - web_planner |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES |
lessc sass scss |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_editor |
assets_editor | ir.ui.view | qweb | Inherits website.assets_editor |
assets_pattern |
Empty assets_frontend pattern | ir.ui.view | qweb | Inherits website.assets_frontend |
demo_page |
Multi website theme demo page | ir.ui.view | qweb | New |
layout_pattern |
Main layout | ir.ui.view | qweb | Inherits website.layout |
s_demo1 |
Demo Cat | ir.ui.view | qweb | New |
s_demo2 |
Demo Dog | ir.ui.view | qweb | New |
snippet_selection |
snippet_selection | ir.ui.view | qweb | Inherits website.snippets |
theme_demo_assets_frontend |
Demo multiwebsite theme | ir.ui.view | qweb | Inherits website.assets_frontend |
view_view_form_extend |
ir.ui.view | xpath | Inherits base.view_view_form | |
view_website_config_settings |
Add theme selector | website.config.settings | field | Inherits website.view_website_config_settings |
No new fields.
Public methods (1)create(self, vals)
No new fields.
Public methods (0)No public methods.
multitheme_copy_ids
One2many → ir.ui.view
help='Duplicates of this view'
readonly=True
string='Copies'
args: 'ir.ui.view', 'origin_view_id'
origin_view_id
Many2one → ir.ui.view
help='View from where this one was copied for multi-website'
readonly=True
string='Copied from'
args: 'ir.ui.view'
was_active
Boolean
help='Indicates if the view was originally active before converting the single website theme that owns it to multi website mode.'
readonly=True
search(self, domain, offset=0, limit=None, order=None, count=False)
multi_theme_id
Many2one → website.theme
comodel_name='website.theme'
default=<expr>
domain=[('has_assets', '=', True)]
help='Multiwebsite-compatible theme for this website'
string='Multiwebsite theme'
multi_theme_view_ids
One2many → ir.ui.view
comodel_name='ir.ui.view'
domain=[('origin_view_id', '!=', False), '|', ('active', '=', True), ('active', '=', False)]
help='Views generated by the multiwebsite theme just for this website'
inverse_name='website_id'
string='Multiwebsite views'
create(self, vals)
write(self, vals)
multi_theme_id
Many2one
related='website_id.multi_theme_id'
multi_theme_reload(self)
asset_ids
One2many → website.theme.asset
comodel_name='website.theme.asset'
help='Asset views that will be disabled by default and enabled only in websites that enable this theme in multiwebsite mode.'
inverse_name='theme_id'
string='Assets'
converted_theme_addon
Char
help='Name of the theme addon that is being converted from single to multi website mode.'
dependency_ids
Many2many → website.theme
help='If theme is splitted in different theme-modules, they should be in this list. "Default theme" should be here too in order to make some features (e.g. footer) work on each website independently'
string='Sub-themes'
args: 'website.theme', 'website_theme_dependency_rel', 'theme1', 'theme2'
has_assets
Boolean
compute='_compute_has_assets'
store=True
name
Char
required=True
translate=True
get_assets(self)
upstream_dependencies(self)
auto
Boolean
default=False
help='Created automatically from theme view'
string='Auto-generated'
name
Char
help='External ID of the assets view that inherits from `website.assets_frontend` and adds the theme requirements.'
name='Reference'
required=True
theme_id
Many2one → website.theme
comodel_name='website.theme'
ondelete='cascade'
required=True
string='Theme'
view_id
Many2one → ir.ui.view
comodel_name='ir.ui.view'
help='View that will be enabled when this theme is used in any website, and disabled otherwise. Usually used to load assets.'
string='Assets view'
view_priority
Integer
readonly=True
related='view_id.priority'
store=True
No public methods.