En esta conferencia realizaremos en directo un ejemplo práctico de creación de dos sencillos temas de website de Odoo con soporte multi-website. Analizaremos las posibilidades que nos ofrece el framework para disponer de dos websites con aspecto diferente. Instalaremos ambos temas en la misma base de datos y crearemos dos websites, asignado un tema diferente a cada una de ellas. Compartiremos con la comunidad a través de Github los addons necesarios para facilitar la creación de temas con soporte multi-website.
1. Multi-website
Cómo crear temas de Odoo con soporte multi-website
@antespi
Antonio Espinosa
Pamplona, Junio 2016
antonio.espinosa@tecnativa.com
Jornadas Odoo España
2. Multi-website
● Misma BBDD
● Varios nombres de dominio
● Varios temas (CSS y layout)
● Contenido y aspecto separados entre sí
¿Qué entendemos por multi-website?
● Sí, parcialmente.
● En v8 con el addon website_multi (sin soporte por Odoo SA)
● En v9 está integrado en el core
¿Odoo soporta multi-website?
3. Situación actual (v8, v9)
¿Qué no se soporta?
● Opciones por website (Show SignIn, Show logo, automatic footer)
● Temas por website (instalar más de un addon de tipo theme)
● Asistente de creación de páginas base para cada website
● Gestor de páginas en backend
● Menús por website
● Páginas por website
● Layouts por website (con restricciones)
¿Qué se soporta?
6. Addon website_multi v8 / website v9
● Añade los campos website_id y key
● Selecciona la vista que tenga key = xmlid del website actual
● Las vistas heredadas son
○ Las vistas con website_id = False
○ Las vistas asociadas al website actual
ir.ui.view
7. Problemas a resolver
● Todo el CSS se minifica junto, no se pueden aplicar condicionales ni
herencia filtrada por website_id
● El CSS minificado se almacena en caché
CSS
● La mayoría de los addons de website heredan de website.layout
● Los controllers de website renderizan páginas que llaman website.layout
● Hay que respetar la cadena de herencia de website.layout
Layout
15. multi_website_theme addon
● Campos
○ name: Nombre del tema
○ css_class: Namespace CSS
website.theme
website
● Seleccionar el tema que se aplica en cada website
● Añade al tag <html> la clase definida en theme.css_class
16. CSS Workaround #1: Aislado por namespace
Ventajas
● Uso del minify integrado en Odoo
● Cambiar cualquier aspecto de Bootstrap por defecto de Odoo
● No colisiona el CSS al instalar dos o más themes
Desventajas
● Aumenta tamaño del CSS a descargar
● Aumenta el procesado del CSS del navegador
17. CSS Workaround #1: Aislado por namespace
website_multi_theme.layout_multi_theme
● name: Template theme
● css_class: template
website.theme
less namespace
18. CSS Workaround #2: Condicional por website
Ventajas
● Añadir a través de opción del editor customize_show="True"
● Menor tamaño del CSS a descargar
Desventajas
● Aumenta la cantidad de ficheros a descargar
● CSS minify manual
20. Roadmap
Asistente de creación de websites
● Crea menús base
● Crea páginas base
Gestor de páginas en backend
● Listado de websites
● Listado de menús por websites
● Listado de páginas por websites
● Listado de templates por websites