197 lines
6.9 KiB
ReStructuredText
197 lines
6.9 KiB
ReStructuredText
.. image:: https://img.shields.io/badge/licence-LGPL--3-blue.svg
|
|
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
|
|
:alt: License: LGPL-3
|
|
|
|
===================
|
|
Website Multi Theme
|
|
===================
|
|
|
|
Allow the website admin to set a different theme for each website.
|
|
|
|
The *theme* might be not just a theme-module, but any set of themes and even
|
|
particular views from any module (e.g. view ``website.custom_footer`` from
|
|
``website`` module). It also means, that *theme* is not just a styling, but
|
|
a content as well.
|
|
|
|
How it works
|
|
============
|
|
|
|
Core idea is as following
|
|
|
|
* Find views created by *theme-module* and mark them as *multi-views* (``website.theme.asset``) additionally to one specified manually via XML (see `demo/themes.xml <demo/themes.xml>`_ as an example). The method `_convert_assets <models/website_theme.py>`_ is responsible for it.
|
|
|
|
* Set ``active`` to ``False`` for *multi-views*. See method `_find_and_deactivate_views <models/website_theme.py>`_.
|
|
|
|
* Apply *Multi-theme* (record in new model ``website.theme``) to the specific
|
|
website. See method `_multi_theme_activate <models/website.py>`_
|
|
|
|
* Make some magic with technical views ``website.assets_frontend`` and ``website.layout``.
|
|
|
|
* Duplicate *patterns* from `templates/patterns.xml <templates/patterns.xml>`_
|
|
* In ``layout_pattern`` replace ``{theme_view}`` placeholder to a duplicate
|
|
of ``assets_pattern``
|
|
* Corresponding duplicated *pattern* will be used as a new value for
|
|
``inherit_id`` field in duplicated *multi-views* that originally extend
|
|
``web.assets_frontend``, ``website.assets_frontend`` or
|
|
``website.layout``.
|
|
|
|
* Duplicate *multi-views* of the *multi-theme* and its *dependencies* (other
|
|
*multi-themes*). In duplicates, the field ``inherit_id`` is changed to other
|
|
duplicated views or duplicated *patterns* when possible
|
|
|
|
Installation
|
|
============
|
|
|
|
To make this module work, you need to either:
|
|
|
|
* Install any of the officially supported themes:
|
|
|
|
* theme_bootswatch
|
|
|
|
* Install any of the unofficially supported themes (at your own risk):
|
|
|
|
* theme_anelusia
|
|
* theme_artists
|
|
* theme_avantgarde
|
|
* theme_beauty
|
|
* theme_bewise
|
|
* theme_bistro
|
|
* theme_bookstore
|
|
* theme_clean
|
|
* theme_enark
|
|
* theme_graphene
|
|
* theme_kea
|
|
* theme_loftspace
|
|
* theme_mongolia
|
|
* theme_nano
|
|
* theme_notes
|
|
* theme_odoo_experts
|
|
* theme_orchid
|
|
* theme_treehouse
|
|
* theme_vehicle
|
|
* theme_yes
|
|
* theme_zap
|
|
|
|
Themes in the above lists will become multiwebsite when installed along this
|
|
module. **If they get installed after ``website_multi_theme``, update this
|
|
module manually**, or it will not be notified of such change.
|
|
|
|
Configuration
|
|
=============
|
|
|
|
To configure this module, you need to:
|
|
|
|
#. Go to *Website Admin > Configuration > Settings* and choose or create
|
|
a *Website*.
|
|
#. Press *Advanced > Multiwebsite theme > Reload*.
|
|
#. In *Advanced > Multiwebsite theme*, pick one of the available themes.
|
|
#. Via Edit button (``fa-external-link``) add *Default Theme* to *Sub-themes* of
|
|
the selected theme to make multi-footer work.
|
|
|
|
Once you save, any website that has no *Multiwebsite theme* selected will have,
|
|
the default plain Bootstrap theme, and those that do have one will get it.
|
|
|
|
Of course, your Odoo instance must be reachable by all of the provided host
|
|
names, or nobody will ever see the effect. But that is most likely configured
|
|
through your DNS provider and/or proxy, so it is not a matter of this addon.
|
|
|
|
If you want to test this behavior, think that ``localhost`` and ``0.0.0.0``
|
|
are different host names.
|
|
|
|
Usage
|
|
=====
|
|
|
|
To use this module, you need to:
|
|
|
|
#. Follow the configuration steps.
|
|
#. Enter any of the websites you modified.
|
|
|
|
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
|
|
:alt: Try me on Runbot
|
|
:target: https://runbot.odoo-community.org/runbot/186/10.0
|
|
|
|
Development FAQ
|
|
===============
|
|
|
|
How to develop a multiwebsite-ready theme?
|
|
------------------------------------------
|
|
|
|
Check ``demo/themes.xml``. It includes a demo theme that will serve as a
|
|
template for you. This demo theme turns primary buttons green, so you can test
|
|
if it is applied or not easily.
|
|
|
|
How to convert a single-website theme in a multi-website one?
|
|
-------------------------------------------------------------
|
|
|
|
Check ``data/themes_bootswatch.xml``. You must do that. You can consider adding
|
|
the support directly in this addon, given it will just do nothing if the
|
|
single-website theme addon is not installed (it acts as a soft dependency).
|
|
|
|
How to get multiwebsite-specific views updated?
|
|
-----------------------------------------------
|
|
|
|
This addon is conservative by default, meaning that in production databases
|
|
views will not be updated if they already were created (except for the ones
|
|
copied from ``templates/patterns.xml``).
|
|
|
|
To force your website getting updated views for all views from a base theme
|
|
that has changed, you should disable the website multi theme (to make the
|
|
engine remove all views) and then re-enable it again (to recreate them from
|
|
scratch).
|
|
|
|
This does not happen in demo or development instances, where views arch is
|
|
always updated.
|
|
|
|
How to test on runbot?
|
|
----------------------
|
|
|
|
* Open ``[[ Website ]] >> Configuration >> Settings``
|
|
* Switch *Website* field from ``Website localhost`` to ``Website 0.0.0.0``
|
|
* Click *fa-external-link* icon to edit the Website
|
|
* At **Website Domain** field copy-paste build domain and add something right after the first dot, for example::
|
|
|
|
Original domain: 3308093-10-0-28910f.runbot2.odoo-community.org
|
|
New domain: 3308093-10-0-28910f.second-website.runbot2.odoo-community.org
|
|
|
|
* Click ``[Save]`` to save changes at the Website
|
|
* Now you can use unchanged build domain for website called ``Website localhost`` and updated domain for website called ``Website 0.0.0.0``
|
|
|
|
Known issues / Roadmap
|
|
======================
|
|
|
|
* Private themes support is not guaranteed.
|
|
* There is no UI to remove websites. Do it through an odoo shell.
|
|
* Theme picker should include some kind of thumbnail if possible.
|
|
* If you install any of the supported themes after installing this addon, you
|
|
will have to press *Reload* in the website config wizard to make it notice
|
|
the change.
|
|
* If you install any unsupported theme along with this addon, it would possibly
|
|
become the base for all those supported, which can easily lead to weird
|
|
situations and errors.
|
|
|
|
Credits
|
|
=======
|
|
|
|
Contributors
|
|
------------
|
|
|
|
* Rafael Blasco <rafael.blasco@tecnativa.com>
|
|
* Antonio Espinosa <antonio.espinosa@tecnativa.com>
|
|
* Jairo Llopis <jairo.llopis@tecnativa.com>
|
|
* Ivan Yelizariev <https://it-projects.info/team/yelizariev>
|
|
|
|
Maintainer
|
|
----------
|
|
|
|
.. image:: https://odoo-community.org/logo.png
|
|
:alt: Odoo Community Association
|
|
:target: https://odoo-community.org
|
|
|
|
This module is maintained by the OCA.
|
|
|
|
OCA, or the Odoo Community Association, is a nonprofit organization whose
|
|
mission is to support the collaborative development of Odoo features and
|
|
promote its widespread use.
|
|
|
|
To contribute to this module, please visit https://odoo-community.org.
|