Introduction
Dans Odoo, les modèles définissent comment les données sont structurées et stockées dans la base de données. Chaque élément de données commerciales avec lequel vous travaillez vit dans un modèle.
Comprendre les modèles Odoo est essentiel pour les développeurs et les consultants fonctionnels. Les modèles sont la base de l'architecture des données Odoo. Ils définissent les champs Odoo, les relations et la logique commerciale.
Cet article se concentre sur le modèle de site web. Il alimente la configuration du site dans Odoo. Que vous construisiez des configurations multi-sites, personnalisiez la marque ou intégriez des systèmes externes, vous travaillerez avec ce modèle.
Qu'est-ce que le modèle de site web
Le modèle de site web représente une configuration de site web dans Odoo. Ce modèle dans Odoo stocke tout ce qui définit l'apparence et le comportement d'un site : domaine, langues, branding, liens sociaux et structure de menu.
Il fait partie de l'application Website et est utilisé par chaque site web Odoo. Dans les configurations multi-sites, vous avez plusieurs enregistrements de site web. Chacun peut avoir son propre domaine, entreprise, langues et thème.
D'autres modèles dans Odoo font référence au modèle de site web via le champ website_id. De nombreux modèles Odoo ont un champ website_id pour limiter le contenu à un site spécifique. C'est ainsi que l'héritage des modèles Odoo et le modèle API dans Odoo fonctionnent ensemble.
Champs clés dans le modèle
Voici les champs Odoo les plus importants dans le modèle de site web. Comprendre ceux-ci vous aidera à travailler efficacement avec la configuration du site.
1. nom
Type : Char. Requis. Ce champ stocke le nom du site web. Il est affiché dans le sélecteur de l'arrière-plan et dans les écrans de configuration. C'est l'identifiant principal du site.
2. séquence
Type : Integer. Par défaut 10. Contrôle l'ordre d'affichage lorsque plusieurs sites web existent. Les valeurs plus basses apparaissent en premier.
3. domaine
Type : Char. Le domaine du site web (par exemple https://www.mydomain.com). Odoo ajoute https s'il est manquant. Il doit être unique. Utilisé pour le routage et le SEO.
4. company_id
Type : Many2one (res.company). Requis. Lien entre le site web et une entreprise Odoo. Dans les configurations multi-entreprises, chaque site web affiche uniquement les données liées à l'entreprise.
5. language_ids
Type: Many2many (res.lang). Les langues disponibles sur ce site web. Les visiteurs peuvent passer de l'une à l'autre. Par défaut, toutes les langues installées.
6. language_count
Type: Integer. Calculé. Le nombre de langues. Utile pour l'affichage et le filtrage.
7. default_lang_id
Type: Many2one (res.lang). Requis. La langue par défaut lorsque les visiteurs arrivent pour la première fois. Doit être dans language_ids.
8. auto_redirect_lang
Type: Boolean. Par défaut Vrai. Lorsqu'il est activé, les visiteurs sont redirigés vers la langue de leur navigateur si elle est disponible.
9. cookies_bar
Type: Boolean. Lorsque Vrai, une barre de cookies est affichée. Utile pour la conformité au RGPD. Odoo peut créer automatiquement une page de politique de cookies.
10. logo
Type: Binaire. Le logo du site web. Affiché dans l'en-tête et ailleurs. Par défaut, le logo Odoo s'il n'est pas défini.
11. favicon
Type: Binaire. Le favicon affiché dans l'onglet du navigateur. Odoo le redimensionne à 256x256.
12. social_twitter
Type: Char. URL du compte Twitter/X. Par défaut, provenant de l'entreprise. Utilisé dans le pied de page et le partage social.
13. social_facebook
Type: Char. URL du compte Facebook. Même modèle que les autres champs sociaux.
14. social_linkedin
Type: Char. URL du compte LinkedIn.
15. social_instagram
Type: Char. URL du compte Instagram.
16. social_youtube
Type: Char. URL du compte YouTube.
17. social_github
Type: Char. URL du compte GitHub.
18. social_tiktok
Type: Char. URL du compte TikTok.
19. social_default_image
Type: Binary. Image par défaut pour le partage social. Remplace le logo lorsqu'il est défini. Utilisé pour Open Graph et les cartes Twitter.
20. google_analytics_key
Type: Char. Clé Google Analytics. Pour le suivi. Odoo injecte le script lorsqu'il est configuré.
21. google_maps_api_key
Type: Char. Clé API Google Maps. Pour les cartes et les fonctionnalités de localisation.
22. user_id
Type: Many2one (res.users). Requis. L'utilisateur public pour ce site web. Utilisé pour l'accès au portail et les visiteurs anonymes. Par défaut de l'entreprise.
23. cdn_activé
Type : Booléen. Lorsque vrai, les ressources statiques sont servies depuis un CDN. Améliore les performances.
24. cdn_url
Type : Char. L'URL de base du CDN. Utilisé lorsque cdn_activé est vrai.
25. cdn_filters
Type : Texte. Modèles Regex pour les URL à réécrire. Par défaut, chemins statiques.
26. menu_id
Type : Many2one (website.menu). Calculé. Le menu principal. Pointe vers l'élément de menu racine pour ce site web.
27. homepage_url
Type : Char. Le chemin de la page d'accueil (par exemple, /contactus ou /shop). Doit commencer par un slash.
28. custom_code_head
Type : Html. Code personnalisé injecté dans l'en-tête. Pour les analyses, les scripts ou les balises méta.
29. code_personnalisé_pied_de_page
Type : Html. Code personnalisé injecté dans le pied de page. Utile pour les widgets de chat ou le suivi.
30. robots_txt
Type : Html. Contenu personnalisé pour robots.txt. Pour le SEO et le contrôle des robots d'exploration.
31. theme_id
Type : Many2one (ir.module.module). Le thème installé.
32. auth_signup_uninvited
Type : Sélection. b2b (Sur invitation) ou b2c (Inscription gratuite). Contrôle si les visiteurs peuvent créer des comptes sans invitation.
33. create_date
Type : Datetime. Date de création de l'enregistrement. Géré automatiquement par Odoo.
34. write_date
Type : Datetime. Date de la dernière modification de l'enregistrement. Également géré automatiquement.
Comment ce modèle est utilisé dans les flux de travail commerciaux
1. Multi-site et localisation
Les entreprises avec plusieurs marques ou régions créent un enregistrement de site par site. Chacun a son propre domaine, ses langues et son contenu. Le champ website_id sur les pages, blogs et produits limite les données au bon site.
2. Branding et identité
Le logo, le favicon et les liens sociaux sont configurés par site. Les équipes marketing les mettent à jour lors d'un rebranding. Le champ social_default_image améliore l'apparence des liens lorsqu'ils sont partagés.
3. Langue et SEO
language_ids et default_lang_id contrôlent quelles langues sont disponibles. auto_redirect_lang améliore l'expérience utilisateur pour les visiteurs internationaux. Une configuration appropriée aide au SEO et hreflang.
4. Performance et CDN
Lorsque le trafic augmente, cdn_activated et cdn_url déchargent les actifs statiques vers un CDN. cdn_filters définissent quelles URL sont réécrites.
5. Conformité et analytics
cookies_bar active la bannière de consentement aux cookies. google_analytics_key et custom_code_head injectent le suivi. robots_txt contrôle l'accès des robots d'exploration.
Comment les développeurs étendent ce modèle
Les développeurs étendent le modèle de site en utilisant plusieurs modèles. L'héritage de modèle Odoo est le principal mécanisme.
Héritage de modèle
Utilisez _inherit = 'website' pour étendre le modèle. Ajoutez de nouveaux champs Odoo, remplacez des méthodes ou ajoutez des contraintes. Le modèle hérité dans Odoo conserve vos modifications dans un module séparé pour des mises à jour faciles.
Ajout de champs
Définissez de nouveaux champs Odoo dans votre modèle hérité. Utilisez le bon type de champ : Char, Many2one, Boolean, Integer, Text, Selection. Prenez en compte les champs dépendants du site web pour une logique multi-site.
Extensions Python
Remplacez create, write ou unlink pour ajouter de la logique. Utilisez super() pour appeler l'original. Faites attention à user_id et company_id lors de la création de sites web par programmation.
Odoo Studio
Odoo Studio vous permet d'ajouter des champs sans code. Bon pour des personnalisations rapides. Pour une logique complexe ou une configuration pilotée par API, les modules personnalisés sont plus maintenables.
Meilleures pratiques
- Définissez un domaine pour chaque site web en production. Cela aide au routage et au SEO.
- Gardez default_lang_id dans language_ids. Odoo valide cela lors du changement.
- Utilisez custom_code_head et custom_code_footer pour des scripts tiers. Évitez de modifier les modèles de base.
- Lors de la création d'intégrations API, utilisez l'API XML-RPC ou JSON-RPC. Le modèle de site web est entièrement exposé. Mappez correctement website_id lors de la synchronisation du contenu.
- Pour les champs personnalisés, utilisez le préfixe
x_ou un préfixe de module pour éviter les conflits avec les futures versions d'Odoo.
Erreurs courantes
- Création de domaines dupliqués. Le champ de domaine a une contrainte d'unicité.
- Oublier de définir user_id lors de la création de sites web via l'API. C'est requis.
- Définir homepage_url sans un slash au début. Odoo valide et génère une erreur.
- Activer cdn_activated sans un cdn_url valide. Les ressources peuvent ne pas se charger.
- Surcharger des méthodes de base sans appeler super(). Cela peut casser d'autres modules ou des mises à jour futures.
Conclusion
Le modèle de site web est central à la configuration du site dans Odoo. Il stocke le domaine, les langues, la marque et le comportement. Comprendre ses champs Odoo et comment d'autres modèles y font référence vous aidera à configurer, personnaliser et intégrer efficacement les sites web Odoo.
Que vous soyez un consultant fonctionnel cartographiant des besoins multi-sites ou un développeur construisant des modules personnalisés, une bonne compréhension du modèle de site web vous fera gagner du temps et évitera des erreurs.
Besoin d'aide pour votre mise en œuvre d'Odoo ?
Dasolo aide les entreprises à mettre en œuvre, personnaliser et optimiser Odoo. Nous nous spécialisons dans les intégrations API et le développement Odoo. Notre équipe a une grande expérience de l'architecture des données Odoo et de modèles comme le site web.
Si vous avez besoin d'aide pour votre mise en œuvre Odoo, la configuration multi-sites ou les intégrations, nous sommes là pour vous aider. Réservez une démo pour discuter de votre projet.