Introduktion
I Odoo bestemmer modeller hvordan forretningsdata organiseres i databasen. Alt fra produkter og kunder til sider og indstillinger ligger i hver sin model, og website-modellen holder styr på alt, der gør en hjemmeside til netop din.
At forstå Odoo-modeller er afgørende både for udviklere og konsulenter. Modellerne udgør fundamentet i Odoo’s datalandskab: felttyper, relationer og den forretningslogik, der får systemet til at opføre sig rigtigt.
Denne guide tager udgangspunkt i website-modellen. Den styrer site-konfiguration i Odoo og er central, når du sætter flere sites op, tilpasser visuel identitet eller forbinder sitet med eksterne services.
Hvad er website-modellen
Website-modellen repræsenterer en hjemmesides konfiguration i Odoo. Den gemmer alt, der bestemmer et sites udseende og adfærd: domæne, sprog, branding, sociale links og menustruktur.
Modellen er en del af Website-appen og bruges af ethvert Odoo-websted. I opsætninger med flere websites oprettes et website-record per site, og hver post kan have sit eget domæne, selskab, sprogvalg og tema.
Mange andre modeller peger på website-modellen gennem feltet website_id. Det er måden Odoo knytter indhold til det rigtige site på — sider, blogs og produkter får ofte et website_id for at afgrænse data.
Vigtige felter i modellen
Her er de vigtigste felter i website-modellen. At kende dem gør det lettere at konfigurere sites korrekt og undgå overraskelser.
1. name
Type: Char. Obligatorisk. Navnet på hjemmesiden — bruges i backend og konfigurationsoversigter som den human-læsbare identifikation af sitet.
2. sequence
Type: Integer. Standard 10. Bestemmer rækkefølgen når flere websites vises; lavere tal vises først.
3. domain
Type: Char. Hjemmesidens domæne (fx https://www.ditdomæne.dk). Skal være unikt; Odoo tilføjer https hvis nødvendigt. Bruges til routing og SEO.
4. company_id
Type: Many2one (res.company). Obligatorisk. Knytter sitet til en Odoo-virksomhed, hvilket er vigtigt i multi-company-opsætninger, så kun firma-relaterede data vises.
5. language_ids
Type: Many2many (res.lang). De sprog, der er tilgængelige på sitet. Besøgende kan skifte mellem dem; standard er alle installerede sprog.
6. language_count
Type: Integer. Beregnet felt. Viser antal sprog — nyttigt i lister og filtre.
7. default_lang_id
Type: Many2one (res.lang). Obligatorisk. Det sprog besøgende møder første gang; skal være en af language_ids.
8. auto_redirect_lang
Type: Boolean. Standard True. Hvis slået til, omdirigeres besøgende automatisk til deres browsersprog, når det findes.
9. cookies_bar
Type: Boolean. Viser en cookie-banner hvis sandt — praktisk for overholdelse af persondataregler. Odoo kan automatisk oprette en cookiepolitik-side.
10. logo
Type: Binary. Hjemmesidens logo. Bruges i header og andre steder; falder tilbage til Odoo-logoet hvis ikke sat.
11. favicon
Type: Binary. Browserikonet i fanen. Odoo tilpasser størrelsen, typisk op til 256x256.
12. social_twitter
Type: Char. Link til Twitter/X-konto. Henter ofte standardværdi fra virksomheden og bruges i footer/deling.
13. social_facebook
Type: Char. Link til Facebook-side. Samme mønster som andre sociale felter.
14. social_linkedin
Type: Char. Link til LinkedIn-side.
15. social_instagram
Type: Char. Link til Instagram-konto.
16. social_youtube
Type: Char. Link til YouTube-kanal.
17. social_github
Type: Char. Link til GitHub-profil.
18. social_tiktok
Type: Char. Link til TikTok-profil.
19. social_default_image
Type: Binary. Standardbillede til deling på sociale medier. Overskriver logoet ved deling og bruges i Open Graph / Twitter cards.
20. google_analytics_key
Type: Char. Nøgle til Google Analytics; Odoo indsætter tracking-scriptet når feltet er udfyldt.
21. google_maps_api_key
Type: Char. Nøgle til Google Maps til kort og lokationsfunktioner.
22. user_id
Type: Many2one (res.users). Obligatorisk. Den offentlige bruger for sitet, som bruges til portal- og anonym adgang; typisk sat fra firmaindstillinger.
23. cdn_activated
Type: Boolean. Hvis aktiveret leveres statiske filer via CDN, hvilket ofte forbedrer performance.
24. cdn_url
Type: Char. Grund-URL for CDN, brugt når cdn_activated er sand.
25. cdn_filters
Type: Text. Regex-mønstre for hvilke URLs der omskrives til CDN-stier; som standard peger de på statiske assets.
26. menu_id
Type: Many2one (website.menu). Beregnet felt. Refererer til root-menuen for webstedet.
27. homepage_url
Type: Char. Sti til forside (fx /kontakt eller /shop). Skal starte med en skråstreg.
28. custom_code_head
Type: Html. Egen kode i — praktisk til analytics, meta-tags eller scripts.
29. custom_code_footer
Type: Html. Egen kode i footeren — fx chat-widgets eller ekstra tracking-snippets.
30. robots_txt
Type: Html. Mulighed for at angive tilpasset robots.txt-indhold til søgemaskiner.
31. theme_id
Type: Many2one (ir.module.module). Installeret tema for sitet.
32. auth_signup_uninvited
Type: Selection. Indstilling for brugeroprettelse: b2b (kun invitation) eller b2c (fri tilmelding).
33. create_date
Type: Datetime. Dato for oprettelse — administreres automatisk af Odoo.
34. write_date
Type: Datetime. Sidste ændringsdato — også automatisk håndteret.
Sådan bruges modellen i forretningsprocesser
1. Multi-website og lokalisering
Virksomheder med flere brands eller markeder opretter ofte et website-record per brand/region. Hvert site kan have eget domæne, sprog og indhold, og website_id på sider, produkter og blogindlæg sikrer, at indholdet vises på det rigtige site.
2. Branding og identitet
Logo, favicon og sociale links sættes pr. website, så marketing kan rulle visuelle ændringer ud per site. Feltet til socialt delebillede forbedrer udseendet af delte links i feeds.
3. Sprog og SEO
language_ids og default_lang_id styrer tilgængelige sprog, mens auto_redirect_lang forbedrer brugeroplevelsen for internationale besøgende og hjælper med korrekt hreflang-håndtering.
4. Performance og CDN
Når trafikken stiger, kan du aktivere CDN for at serve statiske filer. cdn_filters bestemmer hvilke stier der skal pege på CDN’en, hvilket reducerer load på Odoo-serveren.
5. Compliance og tracking
cookies_bar håndterer cookie-samtykke, mens google_analytics_key og custom_code_head/footers gør det nemt at indsætte tracking- og analyse-scripts. robots_txt giver kontrol over hvordan crawlers må gennemgå sitet.
Sådan udvider udviklere modellen
Udviklere bygger videre på website-modellen ved hjælp af veldefinerede udvidelsesmønstre — Odoo’s arve- og udvidelsesmekanismer er centrale.
Modelarv
Brug _inherit = 'website' i dit modul for at udvide modellen. Så kan du tilføje felter, ændre metoder eller indføre begrænsninger uden at ændre kerne-koden, hvilket gør opgraderinger enklere.
Tilføjelse af felter
Tilføj nye felttyper i din arvede model efter behov: Char, Many2one, Boolean, Integer, Text eller Selection. Tænk over om felterne skal være website-afhængige i multi-site scenarier.
Python-udvidelser
Override create, write eller unlink for at indbygge forretningslogik — brug altid super() for at bevare standardadfærd. Vær særlig opmærksom på user_id og company_id ved programmatisk oprettelse.
Odoo Studio
Odoo Studio er praktisk til hurtige tilpasninger uden kode, men for avanceret logik eller API-drevne flows er et custom modul mere robust og vedligeholdelsesvenligt.
Best practices
- Sæt domænet korrekt i produktion — det er vigtigt for routing og SEO.
- Sørg for at default_lang_id hører til i language_ids. Odoo validerer dette ved ændring.
- Brug custom_code_head og custom_code_footer til tredjeparts-scripts i stedet for at pille ved kerne-skabeloner.
- Ved API-integrationer brug XML-RPC eller JSON-RPC. Website-modellen er tilgængelig via API’et — husk at mappe website_id korrekt når du synkroniserer indhold.
- Til nye felter anbefales x_- eller modulpræfiks for at undgå navnekonflikter med fremtidige Odoo-udgivelser.
Almindelige fejl
- At oprette dublerede domæner. Domain-feltet har en unik begrænsning og vil afvise duplikater.
- At glemme at sætte user_id ved API-oprettelse — feltet er påkrævet og giver anonym adgangsinformation.
- At indsætte homepage_url uden foranstillet skråstreg — Odoo validerer stien og vil give fejl.
- At aktivere cdn_activated uden gyldig cdn_url — kan føre til at aktiver ikke kan loades.
- At overskrive kernemetoder uden at kalde super() — det kan bryde funktionalitet og gøre opgraderinger vanskelige.
Konklusion
Website-modellen er nøglen til at konfigurere Odoo-sites. Den håndterer domæner, sprog, branding og adfærd, og viden om dens felter og relationer gør det lettere at konfigurere, tilpasse og integrere websites sikkert.
Uanset om du kortlægger krav som funktionel konsulent eller bygger moduler som udvikler, sparer en god forståelse af website-modellen tid og reducerer risikoen for fejl.
Brug for hjælp til din Odoo-implementering?
Dasolo hjælper virksomheder med at implementere, tilpasse og optimere Odoo. Vi er specialister i API-integrationer og skræddersyet udvikling og har indgående erfaring med Odoo’s datamodel og modeller som website.
Hvis I har brug for hjælp til Odoo-implementering, multi-website-opsætning eller integrationer, står vi klar til at hjælpe. Book en demo for at tale om jeres projekt.