Se rendre au contenu

Le modèle Website : Décoder l’architecture de configuration d’Odoo

Guide complet : concevoir et maîtriser le modèle de site web dans Odoo — pour développeurs et consultants fonctionnels
11 mars 2026 par
Le modèle Website : Décoder l’architecture de configuration d’Odoo
Dasolo
| Aucun commentaire pour l'instant

Introduction


Dans Odoo, un modèle décrit la façon dont les données sont organisées et persistées. Chaque élément lié à votre activité — pages, menus, réglages du site — est enregistré dans un modèle spécifique qui sert de canevas pour stocker et retrouver l’information.


Pour les consultants fonctionnels comme pour les développeurs, maîtriser les modèles d’Odoo est indispensable. Ils constituent l’armature des données : champs, relations entre objets et règles métiers y sont définis et gouvernent le comportement de l’application.


Cet article porte sur le modèle chargé de la configuration des sites web. Il pilote tout ce qui touche à la configuration d’un site Odoo : gestion de plusieurs sites, personnalisation visuelle, et points d’intégration avec des services externes.

Qu’est-ce que le modèle « website » dans Odoo


Le modèle website représente la configuration d’un site dans Odoo. On y trouve tout ce qui définit l’apparence et le fonctionnement d’un site : nom, domaine, langues disponibles, éléments d’identité visuelle, liens sociaux et structure de menu.


Il fait partie de l’application Website et chaque site Odoo possède son enregistrement. Dans une configuration multi-sites, on crée un enregistrement par site : chacun peut avoir son propre domaine, sa société associée, ses langues et son thème.


De nombreux autres modèles pointent vers website via un champ website_id. C’est le mécanisme qui permet de lier pages, blogs, produits ou routes à un site précis et de garder les contenus correctement segmentés entre plusieurs sites.

Champs essentiels du modèle


Voici les champs principaux du modèle website. Les connaître facilite la gestion et la personnalisation d’un site dans Odoo.


1. name

Type : Char. Obligatoire. Nom du site affiché dans l’interface d’administration et utilisé comme identifiant lisible pour les éditeurs et intégrateurs.


2. sequence

Type : Integer. Valeur par défaut 10. Sert à ordonner les sites lorsque plusieurs existent : plus la valeur est basse, plus le site apparaît en premier dans les listes.


3. domain

Type : Char. Le domaine du site (par ex. https://www.monsite.be). Odoo complète le protocole si nécessaire. Ce champ doit être unique et sert au routage et au SEO.


4. company_id

Type : Many2one (res.company). Obligatoire. Relie le site à une société Odoo. Dans un environnement multi-sociétés, chaque site ne montrera que les données de sa société associée.


5. language_ids

Type : Many2many (res.lang). Langues disponibles sur le site. Les visiteurs peuvent basculer entre elles. Par défaut, toutes les langues installées peuvent être proposées.


6. language_count

Type : Integer. Calculé. Compte le nombre de langues activées pour le site — utile pour l’affichage et les filtres.


7. default_lang_id

Type : Many2one (res.lang). Obligatoire. Langue par défaut affichée lors de la première visite. Doit appartenir à language_ids.


8. auto_redirect_lang

Type : Boolean. Par défaut vrai. Redirige automatiquement le visiteur vers la langue de son navigateur si disponible, améliorant l’expérience utilisateur.


9. cookies_bar

Type : Boolean. Active ou non l’affichage d’une bannière de cookies — utile pour la conformité RGPD. Odoo peut aussi générer une page de politique de cookies automatiquement.


10. logo

Type : Binary. Le logo du site affiché dans l’en-tête et les zones publiques. Si non renseigné, un logo par défaut est utilisé.


11. favicon

Type : Binary. Favicon affichée dans l’onglet du navigateur. Odoo adapte la taille à 256×256 si nécessaire.


12. social_twitter

Type : Char. URL du compte Twitter/X. Valeur par défaut héritée de la société. Utilisé en pied de page et lors du partage social.


13. social_facebook

Type : Char. URL du compte Facebook, même principe que pour les autres réseaux.


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 utilisée pour le partage social. Si renseignée, elle remplace le logo pour les balises Open Graph et Twitter cards.


20. google_analytics_key

Type : Char. Clé Google Analytics pour le suivi. Odoo injecte le script quand la clé est configurée.


21. google_maps_api_key

Type : Char. Clé API Google Maps pour les fonctions cartographiques et de localisation.


22. user_id

Type : Many2one (res.users). Obligatoire. L’utilisateur public associé au site, utilisé pour l’accès portail et les visiteurs anonymes. Valeur par défaut dérivée de la société.


23. cdn_activated

Type : Boolean. Active la distribution des ressources statiques via un CDN pour améliorer les performances.


24. cdn_url

Type : Char. URL de base du CDN utilisée si cdn_activated est vrai.


25. cdn_filters

Type : Text. Expressions régulières pour définir quelles URLs doivent être réécrites vers le CDN. Par défaut, on cible les chemins statiques.


26. menu_id

Type : Many2one (website.menu). Calculé. Pointe vers l’élément racine du menu principal du site.


27. homepage_url

Type : Char. Chemin de la page d’accueil (ex. /contact ou /boutique). Doit commencer par un slash.


28. custom_code_head

Type : Html. Code personnalisé injecté dans la balise — utile pour tags, méta, ou scripts d’analyse.


29. custom_code_footer

Type : Html. Code injecté en bas de page — pratique pour widgets de chat ou autres trackers moins intrusifs.


30. robots_txt

Type : Html. Contenu personnalisé du robots.txt pour contrôler l’indexation par les moteurs de recherche.


31. theme_id

Type : Many2one (ir.module.module). Thème installé pour ce site.


32. auth_signup_uninvited

Type : Selection. Options : b2b (sur invitation) ou b2c (inscription libre). Définit si un visiteur peut créer un compte sans invitation.


33. create_date

Type : Datetime. Date de création de l’enregistrement, gérée automatiquement par Odoo.


34. write_date

Type : Datetime. Date de dernière modification, également gérée automatiquement.

Comment ce modèle intervient dans les processus métiers


1. Multi-sites et localisation

Pour une entreprise avec plusieurs marques ou zones géographiques, on crée un enregistrement par site. Chaque site possède son propre domaine, ses langues et son contenu. Le champ website_id sur les pages, produits et articles permet de scinder les contenus par site et d’éviter les fuites d’information entre marques.


2. Identité visuelle et branding

Logo, favicon et liens vers les réseaux sociaux se paramètrent au niveau du site. Les équipes marketing changent ces éléments lors d’une refonte. L’image de partage par défaut (social_default_image) améliore l’apparence des liens sur les réseaux sociaux.


3. Langues et SEO

Les champs de langues déterminent quelles versions linguistiques sont proposées. L’activation de la redirection automatique vers la langue du navigateur améliore le parcours international. Bien paramétrer ces options facilite également la gestion des balises hreflang pour le référencement.


4. Performance et CDN

Quand le trafic augmente, activer le CDN permet de déléguer la diffusion des ressources statiques et d’alléger votre serveur. Les filtres CDN servent à indiquer précisément quelles ressources doivent être réécrites.


5. Conformité et analytics

La bannière de cookies permet de répondre aux obligations RGPD, tandis que la clé Google Analytics et l’injection de code personnalisé assurent le suivi et le reporting. Le robots.txt contrôle l’accès des robots et protège certaines pages de l’indexation.

Comment les développeurs étendent ce modèle


Les développeurs disposent de plusieurs approches pour enrichir le modèle website. L’héritage de modèle d’Odoo est la méthode privilégiée.


Héritage de modèle

Déclarez _inherit = 'website' dans votre module pour étendre le modèle. Vous pouvez ajouter des champs, redéfinir des méthodes ou ajouter des contraintes. En séparant vos ajouts dans un module à part, vous facilitez les mises à jour.


Ajout de champs

Définissez de nouveaux champs dans votre modèle hérité en choisissant le type adapté : Char, Many2one, Boolean, Integer, Text, Selection. Réfléchissez à la portée par site (website-dependent) si votre logique doit varier selon le site.


Extensions Python

Surchargez create, write ou unlink pour injecter de la logique lors des opérations CRUD. Appelez toujours super() pour conserver le comportement de base. Faites attention aux champs obligatoires comme user_id et company_id lorsque vous créez des sites par script.


Odoo Studio

Odoo Studio permet d’ajouter rapidement des champs sans écrire de code — pratique pour des besoins simples. Pour des règles complexes, des validations poussées ou des intégrations API, privilégiez des modules personnalisés maintenables.

Bonnes pratiques


  • En production, définissez un domaine pour chaque site afin d’assurer un routage correct et un bon référencement.
  • Veillez à ce que default_lang_id fasse partie de language_ids — Odoo vérifie cette contrainte lors des modifications.
  • Utilisez custom_code_head et custom_code_footer pour intégrer des scripts tiers, plutôt que de modifier les templates cœur d’Odoo.
  • Pour les intégrations API, utilisez XML-RPC ou JSON-RPC. Le modèle website est accessible via l’API : mappez correctement website_id lors de la synchronisation de contenus entre systèmes.
  • Pour éviter les collisions futures, préfixez vos champs personnalisés par x_ ou par un préfixe de module lors de leur création.

Erreurs fréquentes


  • Créer des domaines en double — le champ domain est unique et lèvera une erreur si vous dupliquez une valeur.
  • Oublier de renseigner user_id lors de la création d’un site via l’API — ce champ est requis et provoquera un échec de création.
  • Saisir homepage_url sans le slash initial — Odoo valide le format et rejettera la valeur incorrecte.
  • Activer cdn_activated sans cdn_url valide — les ressources risquent de ne pas se charger correctement pour les utilisateurs.
  • Surcharger des méthodes cœur sans appeler super() — cela peut casser des modules dépendants et compliquer les montées de version.

Conclusion


Le modèle website est le point central de la configuration d’un site dans Odoo. Il centralise le domaine, les langues, l’identité visuelle et le comportement du site. Comprendre ses champs et ses relations facilite la configuration, la personnalisation et l’intégration des sites Odoo.


Que vous cartographiez des besoins multi-sites en tant que consultant ou que vous développiez des modules sur-mesure, une bonne connaissance du modèle website vous fera gagner du temps et évitera des erreurs coûteuses.

Besoin d’aide pour votre déploiement Odoo ?


Dasolo accompagne les entreprises dans le déploiement, la personnalisation et l’optimisation d’Odoo. Nous sommes spécialistes des intégrations API et du développement Odoo, avec une solide expérience de l’architecture de données et des modèles comme website.


Si vous avez besoin d’accompagnement pour votre implémentation Odoo, la gestion multi-sites ou vos intégrations, notre équipe peut vous aider. Demandez une démo pour échanger sur votre projet.

Le modèle Website : Décoder l’architecture de configuration d’Odoo
Dasolo 11 mars 2026
Partager cet article
Se connecter pour laisser un commentaire.