Innledning
I Odoo beskriver en modell hvordan forretningsdata legges opp og lagres. Hver entitet du jobber med — sider, produkter, menyer — har en modell som bestemmer hvilke felt som finnes og hvordan de permanent lagres i databasen.
Både konsulenter og utviklere bør kjenne modellenes rolle godt. Modellene utgjør grunnmuren i Odoos datamodell: de definerer felttyper, relasjoner mellom poster og hvor forretningslogikken hører hjemme.
Denne teksten fokuserer på nettstedmodellen. Den styrer alt av nettsidekonfigurasjon i Odoo: oppsett av domener, språk, design og integrasjoner. Enten du setter opp flere nettsteder, endrer merkevareprofil eller kobler til tredjepartstjenester, får du ofte kontakt med denne modellen.
Hva er nettstedmodellen
Nettstedmodellen representerer én nettsidekonfigurasjon i Odoo. Den inneholder alle innstillinger som avgjør hvordan en nettside ser ut og oppfører seg — fra domenet og språktilbud til logoer, sosiale lenker og menystruktur.
Modellen lever i Website-appen og brukes av alle nettsider i et system. I oppsett med flere nettsteder opprettes en post per nettsted; hver post kan ha eget domene, tilknyttet selskap, språkvalg og tema.
Mange andre modeller peker mot nettstedmodellen med feltet website_id for å skille innhold per nettsted. Dette er måten Odoo avgrenser sider, bloggposter og produkter til riktig nettside når flere nettsteder kjører i samme database.
Viktige felt i modellen
Nedenfor er de viktigste feltene i nettstedmodellen. Kjennskap til disse gjør det enklere å konfigurere og tilpasse nettsider i Odoo.
1. name
Type: Char. Påkrevd. Navnet på nettstedet som vises i administrasjonen og i switchere. Dette er den primære lesbare identifikatoren for nettstedet.
2. sequence
Type: Integer. Standard 10. Styrer rekkefølgen når flere nettsteder vises; lavere tall kommer først.
3. domain
Type: Char. Nettstedets domene (f.eks. https://www.dittdomene.no). Odoo normaliserer ofte URL-en og krever unik verdi. Feltet brukes til ruting og SEO-oppsett.
4. company_id
Type: Many2one (res.company). Påkrevd. Kobler nettstedet til et selskap i systemet. I flerfirmaoppsett begrenses visning av data til tilhørende selskap.
5. language_ids
Type: Many2many (res.lang). Hvilke språk som er tilgjengelige for besøkende. Som regel settes dette til de installerte språkene for nettstedet.
6. language_count
Type: Integer. Beregnet. Antall språk på nettstedet; nyttig for visning og filtrering i admin.
7. default_lang_id
Type: Many2one (res.lang). Påkrevd. Standard språk for nye besøkende; må være en av language_ids.
8. auto_redirect_lang
Type: Boolean. Standard True. Hvis aktivert omdirigeres brukere til språket deres nettleser foretrekker, når dette er tilgjengelig.
9. cookies_bar
Type: Boolean. Viser en cookie-banner når aktivert — viktig for personvern- og samtykkekrav som GDPR.
10. logo
Type: Binary. Nettstedets logo som vises i topptekst og andre steder. Hvis ikke satt, brukes ofte en standardlogo fra systemet.
11. favicon
Type: Binary. Favicon i nettleserfanen; Odoo skalerer bildene til passende størrelser (typisk opptil 256×256).
12. social_twitter
Type: Char. URL eller brukernavn for Twitter/X. Hentes ofte fra firmaopplysninger som standard og brukes i bunntekst og ved deling.
13. social_facebook
Type: Char. Facebook-kontoens URL. Samme mønster som andre sosiale felt.
14. social_linkedin
Type: Char. LinkedIn-side eller profil-URL.
15. social_instagram
Type: Char. Instagram-URL eller konto.
16. social_youtube
Type: Char. YouTube-kanalens URL.
17. social_github
Type: Char. GitHub-profil eller organisasjon-URL.
18. social_tiktok
Type: Char. TikTok-kontoens URL.
19. social_default_image
Type: Binary. Standardbilde som brukes ved deling i sosiale medier — overstyrer logoen for Open Graph/Twitter-kort.
20. google_analytics_key
Type: Char. Sporings-ID for Google Analytics; Odoo kan automatisk legge inn sporingsskript når dette er konfigurert.
21. google_maps_api_key
Type: Char. API-nøkkel for Google Maps ved bruk av kart eller stedstjenester på nettstedet.
22. user_id
Type: Many2one (res.users). Påkrevd. Den offentlige brukeren tilknyttet nettstedet — brukes for portaltillatelser og anonym tilgang.
23. cdn_activated
Type: Boolean. Hvis aktivert leveres statiske filer fra en CDN for bedre ytelse ved høyt trafikkvolum.
24. cdn_url
Type: Char. Grunn-URL for CDN når cdn_activated er True.
25. cdn_filters
Type: Text. Regex-mønstre som bestemmer hvilke URL-er som omskrives til CDN-stier; standarder peker ofte på statiske kataloger.
26. menu_id
Type: Many2one (website.menu). Beregnet. Refererer til rotmenyen for dette nettstedet.
27. homepage_url
Type: Char. Sti til hjemmesiden (f.eks. /kontakt eller /butikk). Må starte med skråstrek.
28. custom_code_head
Type: Html. Egendefinert kode i -seksjonen — nyttig for tilleggsskript, meta-tags eller konfigurasjonssnippets.
29. custom_code_footer
Type: Html. Egendefinert kode i bunnteksten — typisk chat-widgeter, tredjeparts skript eller sporingskoder som lastes sist.
30. robots_txt
Type: Html. Egne robots.txt-innstillinger for å styre søkemotorcrawlere og indeksregler.
31. theme_id
Type: Many2one (ir.module.module). Installerte tema/modul som bestemmer design og layout for nettstedet.
32. auth_signup_uninvited
Type: Selection. Valg mellom b2b (på invitasjon) eller b2c (åpent for registrering). Styrer om brukere kan opprette kontoer uten invitasjon.
33. create_date
Type: Datetime. Tidsstempel for når posten ble opprettet; administreres automatisk av Odoo.
34. write_date
Type: Datetime. Sist endret tidspunkt for posten; også automatisk håndtert.
Hvordan denne modellen brukes i forretningsflyter
1. Flere nettsteder og lokal tilpasning
Virksomheter med flere merker eller regioner oppretter én post per nettsted. Hver post kan ha eget domene, språk og innhold, og website_id på sider, blogginnlegg og produkter sørger for at riktig innhold vises på riktig nettsted.
2. Merkevare og identitet
Logo, favicon og sosiale lenker settes per nettsted slik at markedsførere enkelt kan rulle ut rebranding. Felt for delingsbilde gjør at lenker ser bedre ut i sosiale kanaler.
3. Språk og søkemotoroptimalisering
language_ids og default_lang_id bestemmer språktilbudet. Automatisk omdirigering etter nettleserspråk gir bedre brukeropplevelse og hjelper søkemotorer med korrekt hreflang-håndtering.
4. Ytelse og CDN
Ved økt trafikk kan du aktivere CDN for å avlaste serveren. CDN-innstillinger og regex-filtre angir hvilke ressurser som leveres fra eksterne edge-noder.
5. Samsvar og analyse
Cookie-banner, sporingsnøkler og egendefinert head/footer-kode lar deg møte personvernkrav og samle trafikkdata. robots_txt gir kontroll over hvilke deler av nettstedet som indekseres.
Hvordan utviklere utvider modellen
Utviklere bygger videre på nettstedmodellen med flere teknikker, der arv av modellen er det mest sentrale mønsteret.
Modellarv
I modulen din bruker du _inherit = 'website' for å utvide funksjonaliteten. Der kan du legge til felter, overstyre metoder eller legge inn ekstra validering — og holde endringene separat slik oppgraderinger blir enklere.
Legge til felter
Ny funksjonalitet krever nye felt i den arvede modellen. Velg passende felttype (Char, Many2one, Boolean, Integer, Text, Selection) og vurder om feltet må være nettstedavhengig i flerside-scenarier.
Python-utvidelser
Overstyr create, write eller unlink for å legge til spesifikk logikk, og kall super() for å bevare originaloppførselen. Vær spesielt obs på user_id og company_id når nettsteder skapes via API eller batch-jobber.
Odoo Studio
Odoo Studio gir en rask vei til å legge til felt uten koding — praktisk for raske endringer. For mer avanserte regler, valideringer eller integrasjoner er modulbaserte tilpasninger mer robuste over tid.
Beste praksis
- Sett hvert nettsted sitt domene i produksjon for korrekt ruting og SEO-oppførsel.
- Sørg for at default_lang_id finnes i language_ids — Odoo kontrollerer dette og vil ikke tillate inkonsistente valg.
- Bruk custom_code_head og custom_code_footer for tredjepartsskript i stedet for å endre kjerne-malene; det gjør oppgraderinger mindre risikable.
- Ved API-integrasjoner, bruk Odoos XML-RPC/JSON-RPC-endepunkter og sørg for å synkronisere website_id riktig slik at innhold havner på riktig nettside.
- For egne felt, benytt x_-prefiks eller modulnavn i feltnavnet for å unngå kollisjoner med fremtidige Odoo-felter.
Vanlige feil
- Opprette dupliserte domener. Domain-feltet har unikhetsbegrensning og vil feile ved duplikat.
- Glemme å sette user_id ved opprettelse via API — dette feltet er påkrevd og må med i payloaden.
- Angi homepage_url uten ledende skråstrek — Odoo validerer formatet og vil kaste feil.
- Aktivere cdn_activated uten gyldig cdn_url kan føre til at statiske filer ikke lastes og at nettsiden bryter for sluttbrukere.
- Overstyre kjernemetoder uten å kalle super() kan ødelegge funksjonalitet i andre moduler og gjøre oppgraderinger problematiske.
Oppsummering
Nettstedmodellen er kjernen i nettoppsettet i Odoo. Den holder styr på domene, språk, merkevaren og atferd for hvert nettsted. Å kjenne feltene og hvordan andre modeller refererer til website-poster gjør det enklere å konfigurere, tilpasse og integrere Odoo-nettsteder riktig.
Enten du kartlegger krav som funksjonell konsulent eller utvikler moduler, vil god forståelse av nettstedmodellen spare tid og redusere feil under utrulling.
Trenger du hjelp med din Odoo-implementering?
Dasolo hjelper selskaper med å implementere, tilpasse og optimalisere Odoo. Vi har særlig erfaring med API-integrasjoner og utvikling tett på Odoos datamodell og sentrale modeller som website.
Trenger du støtte med Odoo-implementasjon, oppsett av flere nettsteder eller integrasjoner? Ta kontakt — vi kan bistå. Book en demo for å diskutere prosjektet ditt.