Introductie
In Odoo bepaalt een model de structuur en opslag van gegevens in de database. Alle zakelijke informatie—pagina's, producten, instellingen—leeft binnen zo'n model.
Kennis van Odoo-modellen is zowel voor ontwikkelaars als voor functionele consultants onmisbaar. Modellen vormen het fundament van de Odoo-data-architectuur en leggen velden, relaties en bedrijfslogica vast.
Deze tekst zoomt in op het website-model: het onderdeel dat de siteconfiguratie regelt. Of je nu meerdere sites beheert, branding aanpast of koppelt aan externe systemen, je komt altijd het website-model tegen.
Wat is het website-model
Het website-model is in Odoo het gegevenselement dat een website beschrijft. Alles wat bepaalt hoe een site eruitziet en zich gedraagt—domein, talen, huisstijl, sociale koppelingen en menustructuur—wordt in dit model bewaard.
Het model hoort bij de Website-app en geldt voor elke Odoo-website. In omgevingen met meerdere websites bestaan er evenveel website-records als sites; elk record kan een eigen domein, bedrijf, talenpakket en thema hebben.
Veel andere modellen verwijzen naar het website-model via het veld website_id. Dat veld beperkt content tot een specifieke site en is essentieel voor hoe Odoo modelovererving en de api samen content scopen.
Belangrijke velden in het model
Onderstaande velden zijn de kern die je moet kennen om sites correct te configureren en te beheren.
1. name
Type: Char. Verplicht. Bewaart de naam van de website. Verschijnt in backend-menu's en configuratieschermen en fungeert als voornaamste herkenning van de site.
2. sequence
Type: Integer. Standaard 10. Bepaalt de volgorde bij meerdere websites; lagere waarden komen eerst.
3. domain
Type: Char. Het domein van de website (bv. https://www.mijndomein.be). Odoo voegt https toe indien nodig. Moet uniek zijn en wordt gebruikt voor routing en SEO.
4. company_id
Type: Many2one (res.company). Verplicht. Verbindt de website met een Odoo-bedrijf. In multi-companyomgevingen toont een site alleen data die bij dat bedrijf hoort.
5. language_ids
Type: Many2many (res.lang). De talen die op de site beschikbaar zijn. Bezoekers kunnen wisselen tussen deze talen; standaard staan alle geïnstalleerde talen aan.
6. language_count
Type: Integer. Berekend veld. Geeft het aantal beschikbare talen weer—handig voor filters en zichtbaarheid in de UI.
7. default_lang_id
Type: Many2one (res.lang). Verplicht. De standaardtaal bij eerste bezoek. Deze taal moet deel uitmaken van language_ids.
8. auto_redirect_lang
Type: Boolean. Standaard True. Schakelt automatische omleiding in naar de browsertaal van de bezoeker wanneer die taal beschikbaar is.
9. cookies_bar
Type: Boolean. Bij True toont Odoo een cookie-banner—handig voor GDPR-compliance. Odoo kan ook automatisch een cookiebeleidspagina aanmaken.
10. logo
Type: Binary. Het logo van de website. Wordt in header en andere plekken weergegeven; valt terug op het standaard Odoo-logo als er geen eigen logo is.
11. favicon
Type: Binary. Het pictogram in het browsertabblad. Odoo schaalt dit naar 256x256 pixels.
12. social_twitter
Type: Char. URL van het Twitter/X-account. Standaard overgenomen van het bedrijf. Wordt gebruikt in footer en bij social sharing.
13. social_facebook
Type: Char. URL van Facebook. Volgt hetzelfde patroon als andere sociale velden.
14. social_linkedin
Type: Char. URL van LinkedIn.
15. social_instagram
Type: Char. URL van Instagram.
16. social_youtube
Type: Char. URL van YouTube.
17. social_github
Type: Char. URL van GitHub.
18. social_tiktok
Type: Char. URL van TikTok.
19. social_default_image
Type: Binary. Standaardbeeld voor social shares. Overschrijft het logo wanneer ingesteld en wordt gebruikt voor Open Graph/Twitter cards.
20. google_analytics_key
Type: Char. Tracking-ID voor Google Analytics. Bij configuratie voegt Odoo het script toe aan de pagina's.
21. google_maps_api_key
Type: Char. API-sleutel voor Google Maps; nodig voor kaartfunctionaliteit en locatieweergave.
22. user_id
Type: Many2one (res.users). Verplicht. De publieke gebruiker gekoppeld aan de site, gebruikt voor portals en anonieme bezoekers; standaard ingesteld vanuit het bedrijf.
23. cdn_activated
Type: Boolean. Als True worden statische bestanden via een CDN geserveerd, wat de laadtijd verbetert.
24. cdn_url
Type: Char. Basis-URL van de CDN; wordt gebruikt wanneer cdn_activated aangevinkt is.
25. cdn_filters
Type: Text. Regex-patronen voor URL's die herschreven moeten worden; standaard gericht op statische paden.
26. menu_id
Type: Many2one (website.menu). Berekend veld. Verwijst naar het hoofdniveau van het menuboek voor deze website.
27. homepage_url
Type: Char. Het pad van de startpagina (bv. /contact of /shop). Moet beginnen met een schuine streep.
28. custom_code_head
Type: Html. Aangepaste code die in de van pagina's wordt geïnjecteerd—handig voor meta-tags, analytics of scripts.
29. custom_code_footer
Type: Html. Aangepaste code onderaan de pagina's; geschikt voor chatwidgets of extra tracking-scripts.
30. robots_txt
Type: Html. Inhoud voor robots.txt, om zoekmachines en crawlers te sturen.
31. theme_id
Type: Many2one (ir.module.module). Het geïnstalleerde thema voor de site.
32. auth_signup_uninvited
Type: Selection. Opties b2b (op uitnodiging) of b2c (vrije registratie). Bepaalt of bezoekers zelf accounts kunnen aanmaken.
33. create_date
Type: Datetime. Aangemaaktatum van het record, automatisch door Odoo beheerd.
34. write_date
Type: Datetime. Laatste wijzigingsdatum van het record, ook automatisch bijgehouden.
Hoe dit model in bedrijfsprocessen wordt gebruikt
1. Multi-site en lokalisatie
Organisaties met verschillende merken of regio's leggen voor elke site een eigen website-record aan. Zo heeft elk platform eigen domein, talen en content. Het website_id-veld op pagina's, blogs en producten zorgt dat de juiste inhoud bij de juiste site hoort.
2. Huisstijl en identiteit
Logo, favicon en sociale links staan per website ingesteld zodat marketingteams makkelijk rebranding of lokale aanpassingen doorvoeren. De social_default_image verbetert de weergave bij gedeelde links.
3. Talen en SEO
language_ids en default_lang_id bepalen het talenaanbod; auto_redirect_lang verbetert de gebruikerservaring voor internationale bezoekers. Een correcte configuratie helpt ook bij hreflang en vindbaarheid.
4. Performance en CDN
Bij stijgende bezoekersaantallen activeer je cdn_activated en stel je cdn_url in om statische assets te offloaden. Met cdn_filters bepaal je welke paden herschreven worden.
5. Compliance en analytics
De cookies_bar regelt toestemming voor cookies; google_analytics_key en custom_code_head injecteren trackingcodes. robots_txt geeft controle over welke pagina's crawlers mogen indexeren.
Hoe ontwikkelaars dit model uitbreiden
Ontwikkelaars breiden het website-model uit met een paar vaste patronen, waarbij modelovererving de meest gebruikte techniek is.
Modelovererving
Je gebruikt _inherit = 'website' om het bestaande model uit te breiden. Zo voeg je nieuwe velden toe, overschrijf je methodes of voeg je validaties toe. Door uitbreidingen in aparte modules te plaatsen blijft upgradebaarheid gewaarborgd.
Velden toevoegen
Nieuwe velden definieer je in je geërfde model: Char, Many2one, Boolean, Integer, Text of Selection. Denk na over website-afhankelijke velden als je multi-site logica wilt ondersteunen.
Python-uitbreidingen
Overschrijf create, write of unlink om extra logica in te bouwen en gebruik super() om de originele implementatie te behouden. Let extra op user_id en company_id bij programmatic aanmaak van websites.
Odoo Studio
Met Odoo Studio voeg je snel velden toe zonder code—handig voor eenvoudige aanpassingen. Voor complexe businesslogica of API-gestuurde configuratie heeft een custom module de voorkeur.
Aanbevolen werkwijzen
- Zet voor productie voor elke website een eigen domein. Dat helpt routing en SEO en voorkomt verwarring.
- Houd default_lang_id altijd binnen language_ids; Odoo valideert dit en kan anders fouten geven.
- Gebruik custom_code_head en custom_code_footer voor externe scripts. Pas liever geen core-templates aan, om compatibiliteit te bewaren.
- Voor API-integraties gebruik je XML-RPC of JSON-RPC; het website-model is volledig beschikbaar. Zorg dat je website_id correct mapt bij het synchroniseren van content.
- Geef aangepaste velden een prefix (bv. x_ of je module-prefix) om botsingen met toekomstige Odoo-versies te vermijden.
Veelvoorkomende fouten
- Dubbele domeinen aanmaken. Het domain-veld heeft een unieke constraint; probeer geen exacte duplicaten te maken.
- Vergeten user_id te zetten bij API-aanmaak van websites. Dit veld is verplicht en veroorzaakt anders fouten.
- Een homepage_url instellen zonder leidende schuine streep. Odoo valideert dit en geeft dan een foutmelding.
- cdn_activated aanzetten zonder geldige cdn_url. Statische bestanden kunnen dan niet laden en de site breekt in prestaties.
- Core-methodes overschrijven zonder super() aan te roepen. Dat kan andere modules breken of problemen veroorzaken bij upgrades.
Slotwoord
Het website-model is de ruggengraat van siteconfiguratie in Odoo: domein, talen, huisstijl en gedragsinstellingen worden hier bewaard. Als je begrijpt welke velden belangrijk zijn en hoe andere modellen naar website verwijzen, configureer en integreer je Odoo-websites efficiënter.
Of je nu als consultant meer sites moet ontwerpen of als ontwikkelaar modules bouwt, een grondige kennis van het website-model bespaart tijd en voorkomt veelvoorkomende fouten.
Hulp nodig bij je Odoo-implementatie?
Dasolo begeleidt bedrijven bij implementatie, maatwerk en optimalisatie van Odoo. We specialiseren ons in API-koppelingen en ontwikkeling, met veel ervaring in de Odoo-data-architectuur en modellen zoals website.
Heb je hulp nodig bij je Odoo-implementatie, multi-websiteopzet of integraties? Ons team staat klaar om je project te ondersteunen. Boek een demo om je project te bespreken.