Introducción
En Odoo, los modelos definen cómo se estructura y almacena la información en la base de datos. Cada pieza de datos empresariales con la que trabaja reside en un modelo.
Entender los modelos de Odoo es esencial tanto para desarrolladores como para consultores funcionales. Los modelos son la base de la arquitectura de datos de Odoo. Definen los campos, relaciones y lógica empresarial de Odoo.
Este artículo se centra en el modelo de sitio web. Este impulsa la configuración del sitio en Odoo. Ya sea que esté construyendo configuraciones de múltiples sitios web, personalizando la marca o integrándose con sistemas externos, trabajará con este modelo.
¿Qué es el modelo de sitio web?
El modelo de sitio web representa una configuración de sitio web en Odoo. Este modelo en Odoo almacena todo lo que define cómo se ve y se comporta un sitio: dominio, idiomas, marca, enlaces sociales y estructura del menú.
Es parte de la aplicación de Website y es utilizado por cada sitio web de Odoo. En configuraciones de múltiples sitios web, tienes múltiples registros de sitios web. Cada uno puede tener su propio dominio, empresa, idiomas y tema.
Otros modelos en Odoo hacen referencia al modelo de sitio web a través del campo website_id. Muchos modelos de Odoo tienen un campo website_id para limitar el contenido a un sitio específico. Así es como la herencia de modelos de Odoo y el modelo api en Odoo trabajan juntos.
Campos clave en el modelo
Aquí están los campos más importantes de Odoo en el modelo de sitio web. Comprender estos te ayudará a trabajar de manera efectiva con la configuración del sitio.
1. nombre
Tipo: Char. Requerido. Este campo almacena el nombre del sitio web. Se muestra en el conmutador del backend y en las pantallas de configuración. Es el identificador principal del sitio.
2. secuencia
Tipo: Integer. Predeterminado 10. Controla el orden de visualización cuando existen múltiples sitios web. Los valores más bajos aparecen primero.
3. dominio
Tipo: Char. El dominio del sitio web (por ejemplo, https://www.mydomain.com). Odoo añade https si falta. Debe ser único. Se utiliza para el enrutamiento y SEO.
4. company_id
Tipo: Many2one (res.company). Requerido. Vincula el sitio web a una empresa de Odoo. En configuraciones de múltiples empresas, cada sitio web muestra solo datos relacionados con la empresa.
5. language_ids
Tipo: Many2many (res.lang). Los idiomas disponibles en este sitio web. Los visitantes pueden cambiar entre ellos. Por defecto, incluye todos los idiomas instalados.
6. language_count
Tipo: Entero. Computado. El número de idiomas. Útil para mostrar y filtrar.
7. default_lang_id
Tipo: Many2one (res.lang). Requerido. El idioma predeterminado cuando los visitantes aterrizan por primera vez. Debe estar en language_ids.
8. auto_redirect_lang
Tipo: Booleano. Por defecto, Verdadero. Cuando está habilitado, los visitantes son redirigidos al idioma de su navegador si está disponible.
9. cookies_bar
Tipo: Booleano. Cuando es Verdadero, se muestra una barra de cookies. Útil para el cumplimiento del GDPR. Odoo puede crear automáticamente una página de política de cookies.
10. logo
Tipo: Binario. El logo del sitio web. Se muestra en el encabezado y en otros lugares. Por defecto, se utiliza el logo de Odoo si no se establece.
11. favicon
Tipo: Binario. El favicon que se muestra en la pestaña del navegador. Odoo lo redimensiona a 256x256.
12. social_twitter
Tipo: Char. URL de la cuenta de Twitter/X. Se toma por defecto de la empresa. Se utiliza en el pie de página y en el compartido social.
13. social_facebook
Tipo: Char. URL de la cuenta de Facebook. Mismo patrón que otros campos sociales.
14. social_linkedin
Tipo: Char. URL de la cuenta de LinkedIn.
15. social_instagram
Tipo: Char. URL de la cuenta de Instagram.
16. social_youtube
Tipo: Char. URL de la cuenta de YouTube.
17. social_github
Tipo: Char. URL de la cuenta de GitHub.
18. social_tiktok
Tipo: Char. URL de la cuenta de TikTok.
19. social_default_image
Tipo: Binario. Imagen predeterminada para compartir en redes sociales. Anula el logo cuando está configurado. Se utiliza para Open Graph y tarjetas de Twitter.
20. google_analytics_key
Tipo: Char. Clave de Google Analytics. Para seguimiento. Odoo inyecta el script cuando está configurado.
21. google_maps_api_key
Tipo: Char. Clave de la API de Google Maps. Para mapas y características de ubicación.
22. user_id
Tipo: Many2one (res.users). Requerido. El usuario público para este sitio web. Utilizado para acceso al portal y visitantes anónimos. Por defecto de la empresa.
23. cdn_activated
Tipo: Booleano. Cuando es Verdadero, los activos estáticos se sirven desde un CDN. Mejora el rendimiento.
24. cdn_url
Tipo: Char. La URL base del CDN. Se utiliza cuando cdn_activated es Verdadero.
25. cdn_filters
Tipo: Texto. Patrones Regex para reescribir URLs. Por defecto, se utilizan rutas estáticas.
26. menu_id
Tipo: Many2one (website.menu). Computado. El menú principal. Apunta al elemento de menú raíz para este sitio web.
27. homepage_url
Tipo: Char. La ruta de la página de inicio (por ejemplo, /contactus o /shop). Debe comenzar con una barra.
28. custom_code_head
Tipo: Html. Código personalizado inyectado en el head. Para análisis, scripts o etiquetas meta.
29. custom_code_footer
Tipo: Html. Código personalizado inyectado en el pie de página. Útil para widgets de chat o seguimiento.
30. robots_txt
Tipo: Html. Contenido personalizado de robots.txt. Para SEO y control de rastreadores.
31. theme_id
Tipo: Many2one (ir.module.module). El tema instalado.
32. auth_signup_uninvited
Tipo: Selección. b2b (Por invitación) o b2c (Registro gratuito). Controla si los visitantes pueden crear cuentas sin una invitación.
33. create_date
Tipo: Datetime. Cuándo se creó el registro. Gestionado automáticamente por Odoo.
34. write_date
Tipo: Datetime. Cuándo se modificó por última vez el registro. También gestionado automáticamente.
Cómo se utiliza este modelo en los flujos de trabajo empresariales
1. Múltiples sitios web y localización
Las empresas con múltiples marcas o regiones crean un registro de sitio web por cada sitio. Cada uno tiene su propio dominio, idiomas y contenido. El campo website_id en páginas, blogs y productos delimita los datos al sitio correcto.
2. Marca e identidad
El logotipo, el favicon y los enlaces sociales se configuran por sitio web. Los equipos de marketing actualizan estos elementos al realizar un cambio de marca. El campo social_default_image mejora la apariencia de los enlaces cuando se comparten.
3. Idioma y SEO
language_ids y default_lang_id controlan qué idiomas están disponibles. auto_redirect_lang mejora la experiencia del usuario para los visitantes internacionales. Una configuración adecuada ayuda con el SEO y hreflang.
4. Rendimiento y CDN
Cuando el tráfico crece, cdn_activated y cdn_url descargan activos estáticos a un CDN. cdn_filters definen qué URLs se reescriben.
5. Cumplimiento y análisis
cookies_bar habilita el banner de consentimiento de cookies. google_analytics_key y custom_code_head inyectan seguimiento. robots_txt controla el acceso de los rastreadores.
Cómo los desarrolladores extienden este modelo
Los desarrolladores amplían el modelo de sitio web utilizando varios patrones. La herencia de modelos de Odoo es el principal mecanismo.
Herencia de modelos
Utiliza _inherit = 'website' para extender el modelo. Agrega nuevos campos de Odoo, sobrescribe métodos o añade restricciones. El modelo heredado en Odoo mantiene tus cambios en un módulo separado para facilitar las actualizaciones.
Añadiendo Campos
Define nuevos campos de Odoo en tu modelo heredado. Usa el tipo de campo correcto: Char, Many2one, Boolean, Integer, Text, Selection. Considera campos dependientes del sitio web para la lógica de múltiples sitios web.
Extensiones de Python
Sobrescribe create, write o unlink para añadir lógica. Usa super() para llamar al original. Ten cuidado con user_id y company_id al crear sitios web programáticamente.
Odoo Studio
Odoo Studio te permite añadir campos sin código. Bueno para personalizaciones rápidas. Para lógica compleja o configuración impulsada por API, los módulos personalizados son más mantenibles.
Mejores prácticas
- Establece el dominio para cada sitio web en producción. Ayuda con el enrutamiento y SEO.
- Mantén default_lang_id dentro de language_ids. Odoo valida esto al cambiar.
- Utiliza custom_code_head y custom_code_footer para scripts de terceros. Evita modificar plantillas centrales.
- Al construir integraciones de API, utiliza la API XML-RPC o JSON-RPC. El modelo de sitio web está completamente expuesto. Mapea website_id correctamente al sincronizar contenido.
- Para campos personalizados, utiliza el prefijo
x_o un prefijo de módulo para evitar conflictos con futuras versiones de Odoo.
Errores comunes
- Creando dominios duplicados. El campo de dominio tiene una restricción única.
- Olvidando establecer user_id al crear sitios web a través de la API. Es obligatorio.
- Estableciendo homepage_url sin una barra diagonal al principio. Odoo valida y genera un error.
- Activando cdn_activated sin un cdn_url válido. Los activos pueden no cargarse.
- Sobrescribiendo métodos centrales sin llamar a super(). Esto puede romper otros módulos o futuras actualizaciones.
Conclusión
El modelo de sitio web es central para la configuración del sitio en Odoo. Almacena dominio, idiomas, marca y comportamiento. Comprender sus campos en Odoo y cómo otros modelos lo referencian te ayudará a configurar, personalizar e integrar sitios web de Odoo de manera efectiva.
Ya seas un consultor funcional mapeando necesidades de múltiples sitios o un desarrollador construyendo módulos personalizados, un sólido entendimiento del modelo de sitio web te ahorrará tiempo y evitará errores.
¿Necesita ayuda con su implementación de Odoo?
Dasolo ayuda a las empresas a implementar, personalizar y optimizar Odoo. Nos especializamos en integraciones de API y desarrollo de Odoo. Nuestro equipo tiene una profunda experiencia con la arquitectura de datos de Odoo y modelos como el de sitio web.
Si necesitas ayuda con tu implementación de Odoo, configuración de múltiples sitios web o integraciones, estamos aquí para ayudar. Reserva una demostración para discutir tu proyecto.