Hoppa till innehåll

Website.page-modellen: Så fungerar Odoo’s webbsidearkitektur

En heltäckande handbok om Odoos sidmodell, skriven för utvecklare och funktionella konsulter som vill bygga, anpassa och förstå webbplatser i Odoo på djupet.
11 mars 2026 av
Website.page-modellen: Så fungerar Odoo’s webbsidearkitektur
Dasolo
| Inga kommentarer ännu

Introduktion


I Odoo beskriver modeller hur information organiseras och lagras. All affärsdata — från kundkort till produktbeskrivningar eller webbsidor — sparas på modellnivå i databasen.


Att förstå Odoo-modeller är lika viktigt för utvecklare som för funktionella konsulter. Modeller utgör ramverket för datalagring, relationer mellan objekt och var affärslogiken ligger implementerad.


Den här genomgången koncentrerar sig på website.page. Det är modellen som hanterar statiska sidor i din Odoo-webbplats — sådant du bygger och redigerar manuellt via webbeditorn eller via kod.

Vad är modellen website.page


website.page representerar en statisk sida i Website-appen. Typiska exempel är "Om oss", kontakt- eller kampanjsidor som du vill kunna styra separat från dynamiskt genererat innehåll.


Modellen använder Odookonceptet arv: den kopplar ihop poster med ir.ui.view via _inherits. Det innebär att själva sidans QWeb-mall och metadata ligger i ir.ui.view, medan website.page håller sidans webbspecifika egenskaper.

Dynamiskt genererade sidor, som produktlistor eller bloggarkiv, byggs däremot på andra mekanismer och hamnar inte i samma modell.


website.page är alltså avsedd för statiskt innehåll som skapas och redigeras i webbeditorn — inte för sidor som komponeras dynamiskt från kataloger eller queries.

Viktiga fält i modellen


Några fält i modellen är extra viktiga att känna till. De styr titlar, URL:er, publiceringsstatus, SEO och hur sidan visas i webbplatsens layout.


1. name

Typ: Char. Titel på sidan som visas i flikar, menyer och sökresultat. Namnet kommer ofta från den länkade ir.ui.view.


2. url

Typ: Char. Sidans sökväg på webbplatsen. Ska börja med ett snedstreck, t.ex. /kontakt eller /om-oss — det är den adress besökare använder för att nå sidan.


3. view_id

Typ: Many2one (ir.ui.view). Obligatorisk. Referens till QWeb-vyn som innehåller sidans XML-arkitektur. Radering av vyn påverkar sidan.


4. website_id

Typ: Many2one (website). Avgör vilken webbplats posten tillhör i fler-sajt-konfigurationer. Tomt värde kan innebära delade sidor.


5. is_published

Typ: Boolean. Anger om sidan är synlig för allmänheten. Opublicerade sidor returnerar vanligtvis 404 eller omdirigeras.


6. website_indexed

Typ: Boolean. Styr om sökmotorer får indexera sidan. Viktigt att stänga av för tack-sidor och interna bekräftelser.


7. date_publish

Typ: Datetime. Publiceringsdatum som används för schemaläggning och visning av när innehållet gick live.


8. header_visible

Typ: Boolean. Bestämmer om webbplatsens header ska visas på just den här sidan — användbart för landningssidor som ska vara fria från navigationsstörningar.


9. footer_visible

Typ: Boolean. Samma idé för sidfoten; kan stängas av för rena kampanjsidor eller fullskärmslayouter.


10. is_homepage

Typ: Boolean (beräknat). Visar om posten är inställd som startsida. Endast en startsida per webbplats kan vara sann.


11. is_visible

Typ: Boolean (beräknat). Indikerar om sidan faktiskt är synlig baserat på publiceringsstatus, datum och synlighetsregler.


12. menu_ids

Typ: One2many (website.menu). Kopplingar till menyposter. En sida kan dyka upp i flera menyer eller inte i någon alls.


13. create_date

Typ: Datetime. När posten skapades. Automatiskt underhållet — användbart vid revision och innehållsrapportering.


14. write_date

Typ: Datetime. Senaste ändringstidpunkt. Hjälper att följa upp redigeringar och innehållslivscykel.


15. arch

Typ: Text. Själva QWeb-mallen (XML) som lagras på ir.ui.view. Innehåller HTML-struktur och Odoo-snippets — kan redigeras i webbeditorn.


16. key

Typ: Char. Unik identifierare för vyn, viktig i modul-XML och arvsscenarion (t.ex. modul.view_name).


17. type

Typ: Selection. Visningstyp — för webbplatsidor är detta normalt qweb; andra typer är exempelvis form eller tree.


18. active

Typ: Boolean. Mjuk borttagning (arkivering). Kommer från ir.ui.view — arkiverade sidor serveras inte.


19. website_meta_title

Typ: Char. SEO-titel som visas i sökresultat och påverkar klickfrekvensen. Sätt en tydlig, beskrivande titel för varje offentlig sida.


20. website_meta_description

Typ: Text. Meta-beskrivning i sökresultat. Håll den runt 150–160 tecken för bästa visning i sökmotorer.


21. website_meta_keywords

Typ: Char. Meta-nyckelord — mindre betydelsefullt idag men fortfarande använt i vissa system. Separera med kommatecken.


22. header_overlay

Typ: Boolean. Anger om headern ligger ovanpå innehållet, användbart för hero-bannrar där headern ska överlappa bilden.


23. header_color

Typ: Selection. Färgtema för headern (transparent, ljus, mörk etc.) som påverkar kontrast och läsbarhet.


24. visibility

Typ: Selection. Åtkomstkontroll — alternativ som offentlig, inloggad användare, begränsad grupp eller skyddad med lösenord.


25. redirect_type

Typ: Selection. Bestämmer om en URL-ändring ska ge 301 (permanent), 302 (tillfällig) eller ingen omdirigering — viktigt för SEO vid flytt.

Hur modellen används i affärsflöden


1. Landningssidor och kampanjer

Marknadsföring skapar ofta fristående landningssidor för kampanjer. Varje sådan sida är en website.page-post där du styr URL, innehåll och publiceringstidpunkt.


2. Företagssidor

Sidor som Om oss, Kontakt eller juridiska dokument ligger normalt som website.page-poster och får uppdateras efter behov. Menyplacering sker via menu_ids.


3. Tack- och bekräftelsesidor

Tack-sidor efter formulär eller betalning bör markeras som icke-indexerade så att de inte dyker upp i sökresultaten.


4. Flera webbplatser och lokalisering

I ett multi-site-upplägg avgör website_id vilken sajt som visar sidan. Du kan duplicera och lokalisera innehåll för varje webbplats.


5. Innehåll bakom inloggning och begränsad åtkomst

Genom visibility-inställningen kan du skapa sidor enbart för inloggade användare eller specifika användargrupper — praktiskt för medlemsområden eller intern dokumentation.

Hur utvecklare bygger vidare på modellen


Utvecklare bygger på website.page med Odoos arv- och anpassningsmönster. Det ger flexibilitet att lägga till fält, valideringar och skräddarsydd logik.


Modellarv

Använd _inherit = 'website.page' för att utöka modellen. Då kan du lägga till fält, skriva om metoder eller införa constraints i en separat modul som håller anpassningar isolerade vid uppgraderingar.


Lägga till fält

Definiera nya Odoo-fält i din ärvda modell: Char, Many2one, Boolean, Integer, Text, Selection. Tänk på att använda webbplatsberoende fält om du hanterar flera webbplatser.


Python-förlängningar

Skriv om create, write eller unlink för att införa extra logik — kom ihåg att alltid anropa super() där det behövs och var försiktig med view_id-kopplingen eftersom vyer kan kaskadraderas.


Odoo Studio

Odoo Studio är användbart för snabba layout- och fältändringar utan kod. För mer komplex funktionalitet eller API-drivna flöden är modulbaserad utveckling att föredra för långsiktig underhållbarhet.

Rekommenderade arbetssätt


  • Använd URL-vänliga slugs utan mellanslag eller specialtecken — bindestreck är bäst för läsbarhet och sökmotorvänlighet.
  • Sätt website_indexed till False för tack-sidor, bekräftelser och interna sidor så de inte indexeras.
  • När du ändrar URL:er, konfigurera omdirigeringar (301 eller 302) för att bevara SEO-värde och undvika brutna länkar.
  • Fyll i website_meta_title och website_meta_description för varje offentlig sida — det förbättrar synligheten i sökresultat.
  • När du skapar sidor via API eller XML-RPC: skapa ir.ui.view först, därefter website.page med view_id. Se till att vyn är av typen qweb och har en unik key.

Vanliga misstag


  • Att skapa en website.page utan giltig view_id leder till fel — vyn måste finnas och vara av typen qweb.
  • Använd alltid URL:er som börjar med ett snedstreck (/kontakt), annars kommer Odoo inte att känna igen sökvägen korrekt.
  • Att glömma website_indexed på tack-sidor gör att de kan hamna i sökresultat och spä ut relevant innehåll.
  • Byter du URL utan att lägga in omdirigering riskerar gamla länkar och sökmotorindex att brytas.
  • Om du redigerar arch i en vy som tidigare redigerats i webbeditorn kan noupdate-flaggan i ir.model.data hindra XML-ändringar — kontrollera och återställ vid behov.

Sammanfattning


website.page är navet för hantering av statiska sidor i Odoo: här ligger metadata, URL-regler och publiceringsinställningar medan själva HTML-mallen förvaras i ir.ui.view.


Att förstå modellens fält och dess relation till ir.ui.view gör det enklare att konfigurera, anpassa och integrera Odoo-webbplatser — oavsett om du jobbar funktionellt eller tekniskt.

Behöver du hjälp med din Odoo-implementering?


Dasolo hjälper företag att implementera, anpassa och optimera Odoo. Vi specialiserar oss på API-integrationer och skräddarsydd utveckling med djup kunskap om Odoos datamodeller, inklusive website.page.


Behöver du stöd med Odoo, anpassade webbsidor eller integrationer? Vi kan assistera från kravställning till leverans. Boka en demo för att diskutera ditt projekt.

Website.page-modellen: Så fungerar Odoo’s webbsidearkitektur
Dasolo 11 mars 2026
Dela detta inlägg
Logga in att lämna en kommentar