Inledning
I Odoo beskriver en modell hur affärsdata är uppbyggd och lagras i databasen. All information du arbetar med — produkter, sidor, inställningar — lever i en modell och dess fält.
Att förstå modeller är nödvändigt både för utvecklare och funktionella konsulter. Modellerna utgör Odoos datalager: här definieras fält, relationer och affärslogik som resten av systemet förlitar sig på.
Den här texten fokuserar på webbplatsmodellen — den del som hanterar webbplatsinställningar i Odoo. Oavsett om du bygger flera sajter, byter utseende eller integrerar externa system kommer du i praktiken att arbeta mot den här modellen.
Vad är webbplatsmodellen
Webbplatsmodellen är Odoos sätt att representera en webbplatskonfiguration. I den lagras allt som avgör hur en sajt ser ut och beter sig: domän, språk, profil, sociala länkar och menystruktur.
Modellen hör till Website-appen och varje Odoo-webbplats har sitt eget modellobjekt. I uppsättningar med flera webbplatser skapar man flera poster — varje webbplats kan ha separat domän, företagstilknytning, språk och tema.
Många andra modeller pekar på webbplatsmodellen via fältet website_id. Det är så innehåll som sidor, blogginlägg eller produkter kan avgränsas till en specifik sajt — en enkel mekanism för att skopsa data inom Odoo.
Viktiga fält i modellen
Nedan listas de viktigaste fälten i webbplatsmodellen. Att känna till dessa gör det lättare att konfigurera och felsöka sajten.
1. name
Typ: Char. Obligatoriskt. Lagrar webbplatsens namn och visas bland annat i backend-väljaren och i inställningsgränssnittet. Fungerar som primärt identifierande namn för sajten.
2. sequence
Typ: Integer. Standard 10. Styr i vilken ordning fler webbplatser visas i listor och menyer — lägre värden visas först.
3. domain
Typ: Char. Webbplatsens domän (t.ex. https://www.exempel.se). Odoo kompletterar protokoll vid behov och domänen måste vara unik eftersom den används för routing och SEO.
4. company_id
Typ: Many2one (res.company). Obligatoriskt. Kopplar webbplatsen till ett företag i Odoo. I multibolagsmiljö visas bara data som hör till det företaget.
5. language_ids
Typ: Many2many (res.lang). Lista över språk som är aktiverade på sajten. Besökare kan byta språk och som standard är alla installerade språk tillgängliga.
6. language_count
Typ: Integer. Beräknat fält som visar antal tillgängliga språk — praktiskt för vyer och filtrering.
7. default_lang_id
Typ: Many2one (res.lang). Obligatoriskt. Definierar vilket språk som visas vid första besöket. Språket måste ingå i language_ids.
8. auto_redirect_lang
Typ: Boolean. Standard True. Om aktiverat dirigeras besökare automatiskt till sitt browserspråk när det finns tillgängligt.
9. cookies_bar
Typ: Boolean. Visar en cookie-banner när det är aktiverat — användbart för GDPR-efterlevnad. Odoo kan även skapa en cookie-policy-sida automatiskt.
10. logo
Typ: Binary. Sajtlobbyns logotyp som visas i header och andra platser. Om inget sätts används en standardlogotyp.
11. favicon
Typ: Binary. Faviconen som visas i fliken. Odoo normaliserar bilden till exempelvis 256x256.
12. social_twitter
Typ: Char. Länk till Twitter/X-konto. Fältet kan ärvas från företagsinställningar och används i sidfoten och vid delning.
13. social_facebook
Typ: Char. Länk till Facebook-sida. Samma logik som för övriga sociala fält.
14. social_linkedin
Typ: Char. Länk till LinkedIn-profil.
15. social_instagram
Typ: Char. Länk till Instagram.
16. social_youtube
Typ: Char. Länk till YouTube-kanal.
17. social_github
Typ: Char. Länk till GitHub.
18. social_tiktok
Typ: Char. Länk till TikTok.
19. social_default_image
Typ: Binary. Standardbild som används vid delning i sociala medier. Om denna sätts används den före logotypen för Open Graph och Twitter-kort.
20. google_analytics_key
Typ: Char. Nyckel för Google Analytics som Odoo automatiskt injicerar i sidan när den finns konfigurerad.
21. google_maps_api_key
Typ: Char. API-nyckel för Google Maps som behövs för kartfunktioner.
22. user_id
Typ: Many2one (res.users). Obligatoriskt. Anger den publika användaren för sajten — används för portalåtkomst och anonyma sessioner. Sätts ofta från företagsinställningarna.
23. cdn_activated
Typ: Boolean. När aktiverat hämtas statiska resurser från ett CDN för bättre prestanda.
24. cdn_url
Typ: Char. Bas-URL för CDN som används när cdn_activated är satt.
25. cdn_filters
Typ: Text. Regex-mönster som bestämmer vilka URL:er som ska skrivas om till CDN-sökvägar. Standardinställningen riktar oftast mot statiska sökvägar.
26. menu_id
Typ: Many2one (website.menu). Beräknat fält som pekar på webbplatsens rotmeny.
27. homepage_url
Typ: Char. Skrivvägen till startsidan (t.ex. /kontakt eller /butik). Måste börja med snedstreck.
28. custom_code_head
Typ: Html. Fritt fält för att injicera kod i sidans — används för analys, meta-taggar eller tredjepartsskript.
29. custom_code_footer
Typ: Html. Kod som injiceras i sidfoten, exempelvis chattwidgets eller spårningsskript.
30. robots_txt
Typ: Html. Möjlighet att lägga in anpassat robots.txt-innehåll för att styra sökmotorernas åtkomst.
31. theme_id
Typ: Many2one (ir.module.module). Referens till det installerade temat som styr sidans utseende.
32. auth_signup_uninvited
Typ: Selection. Värden: b2b (endast inbjudna) eller b2c (öppet för egenregistrering). Styr om besökare kan skapa konto utan inbjudan.
33. create_date
Typ: Datetime. Tidpunkten då posten skapades — hanteras automatiskt av Odoo.
34. write_date
Typ: Datetime. Tidpunkt för senaste ändring — också automatiskt hanterat.
Hur modellen används i affärsflöden
1. Multiwebbplatser och lokalisering
Företag som agerar i flera länder eller under olika varumärken skapar en webbpost per sajt. Varje post kan ha egen domän, språk och innehåll — website_id på sidor och produkter ser till att rätt innehåll visas per sajt.
2. Varumärke och identitet
Logotyp, favicon och sociala länkar konfigureras per webbplats så marknadsteam snabbt kan byta profil vid rebranding. Fältet för delningsbild förbättrar förhandsvisningar när länkar delas i sociala kanaler.
3. Språk och SEO
language_ids och default_lang_id avgör vilka språk som erbjuds. Automatisk språkredirect höjer användarupplevelsen för internationella besökare och korrekt konfiguration hjälper också med hreflang och sökmotoroptimering.
4. Prestanda och CDN
När trafiken ökar kan man aktivera CDN för att avlasta servern — cdn_activated och cdn_url pekar om statiska filer medan cdn_filters bestämmer vilka sökvägar som omskrivs.
5. Efterlevnad och analys
cookies_bar hanterar cookie-samtycke, google_analytics_key och custom_code_head möjliggör spårning, och robots_txt används för att styra sökmotorers åtkomst på ett kontrollerat sätt.
Hur utvecklare bygger ut modellen
Utvecklare kan bygga ut webbplatsmodellen med Odoos ärvningsmekanismer och några etablerade mönster.
Modellläggning/ärvning
I din modul använder du _inherit = 'website' för att lägga till fält, skriva om metoder eller lägga in valideringar. Genom att hålla ändringar i en separat modul blir uppgraderingar enklare.
Lägga till fält
Definiera nya fält i den ärvda modellen med lämplig typ — Char, Many2one, Boolean, Integer, Text eller Selection. Tänk igenom om fältet ska vara webbplatsberoende i en multi-sajt-miljö.
Python-utvidgningar
Skriv över create, write eller unlink för att lägga in egen logik — anropa alltid super() där det är relevant. Var särskilt uppmärksam på user_id och company_id när webbplatser skapas programmässigt.
Odoo Studio
Odoo Studio är ett bra verktyg för snabba ändringar utan kod, men för avancerad logik eller API-styrd konfiguration är en modulbaserad lösning oftast mer hållbar och versionsbar.
Rekommenderade tillvägagångssätt
- I produktionsmiljö: sätt alltid korrekt domän för varje webbplats — det förbättrar routing och sökmotoroptimering.
- Se till att default_lang_id finns i language_ids — Odoo validerar detta och avvikelse ger fel.
- Använd custom_code_head och custom_code_footer för tredjepartsskript istället för att ändra kärnmallar, så blir det lättare att uppgradera.
- När du bygger API-integrationer: använd XML-RPC eller JSON-RPC och mappa website_id korrekt så innehåll synkas till rätt sajt.
- För egna fält: prefixa med x_ eller modulns prefix för att undvika namnkonflikter vid framtida Odoo-uppgraderingar.
Vanliga misstag
- Att skapa poster med duplicerade domäner — domain-fältet har unikhetsbegränsning och kollapsar om du försöker duplicera.
- Glöm inte user_id vid skapande via API — fältet är obligatoriskt och orsakar fel annars.
- Ange alltid homepage_url med ledande snedstreck — utan det kommer Odoo att slå ifrån sig och ge ett valideringsfel.
- Aktivera inte cdn_activated utan att ange en giltig cdn_url — annars kan statiska resurser sluta laddas korrekt.
- Att skriva över kärnmetoder utan att anropa super() riskerar att bryta annan funktionalitet eller orsaka problem vid uppgradering.
Sammanfattning
Webbplatsmodellen ligger i centrum för hur sajter i Odoo konfigureras. Den samlar domän, språk, profil och beteende i en strukturerad form, och andra modeller refererar till den för att hålla innehåll på rätt plats.
Oavsett om du kartlägger behov för flera sajter som konsult eller bygger moduler som utvecklare, ger kunskap om webbplatsmodellen mindre felsökning och snabbare implementationer.
Behöver ni hjälp med er Odoo-implementation?
Dasolo hjälper företag med att implementera, anpassa och optimera Odoo. Vi har särskild kompetens kring API-integrationer och vidareutveckling av Odoo-modeller som webbplatsmodellen.
Behöver ni stöd med er Odoo-implementation, multiwebbplatsupplägg eller integrationer — vi kan hjälpa till. Boka en demo för att diskutera ert projekt.