Introduzione
In Odoo, i modelli definiscono come i dati sono strutturati e memorizzati nel database. Ogni pezzo di dati aziendali con cui lavori vive in un modello.
Comprendere i modelli di Odoo è essenziale sia per gli sviluppatori che per i consulenti funzionali. I modelli sono la base dell'architettura dei dati di Odoo. Definiscono i campi di Odoo, le relazioni e la logica aziendale.
Questo articolo si concentra sul modello website.page. Esso alimenta le pagine statiche sul tuo sito web Odoo. Che tu stia creando pagine di atterraggio personalizzate, gestendo contenuti o integrando sistemi esterni, lavorerai con questo modello.
Cos'è il modello website.page
Il modello website.page rappresenta le pagine statiche del sito web in Odoo. Fa parte dell'app Website e memorizza le pagine che crei manualmente, come Chi Siamo, Contatti o pagine di atterraggio personalizzate.
Questo modello in Odoo utilizza l'ereditarietà dei modelli di Odoo. Eredita da ir.ui.view tramite il meccanismo _inherits. Ogni record website.page è collegato a un ir.ui.view che contiene il template QWeb (arch) e i metadati.
Le pagine dinamiche, come quelle del negozio o dell'elenco del blog, vengono generate in modo diverso.
Non sono memorizzate come record website.page. Il modello website.page è specificamente per contenuti statici che crei e modifichi tramite il costruttore di siti web.
Campi chiave nel modello
Ecco i campi Odoo più importanti nel modello website.page. Comprendere questi campi ti aiuterà a lavorare in modo efficace con le pagine del sito web.
1. name
Tipo: Char. Questo campo memorizza il titolo della pagina. Viene visualizzato nella scheda del browser, nei menu e nei risultati di ricerca. Proviene dall'ir.ui.view collegato.
2. url
Tipo: Char. Il percorso URL della pagina. Deve iniziare con una barra. Esempi: /contactus, /about-us. Questo è il percorso che i visitatori usano per accedere alla pagina.
3. view_id
Tipo: Many2one (ir.ui.view). Obbligatorio. Collega alla vista QWeb che contiene il contenuto della pagina. La vista contiene l'arch (template XML) e la chiave. Eliminare la vista si riflette sulla pagina.
4. website_id
Tipo: Many2one (sito web). Il sito web a cui appartiene questa pagina. In configurazioni multi-sito, le pagine possono essere specifiche per un sito web o condivise (quando vuote).
5. è_pubblicato
Tipo: Booleano. Se la pagina è visibile ai visitatori. Le pagine non pubblicate restituiscono 404 o reindirizzano. Usa questo per nascondere le pagine senza eliminarle.
6. sito_indicizzato
Tipo: Booleano. Controlla se i motori di ricerca possono indicizzare la pagina. Imposta su Falso per le pagine di ringraziamento o le pagine interne che non vuoi nei risultati di ricerca.
7. data_pubblicazione
Tipo: Datetime. La data di pubblicazione. Utilizzata per la pubblicazione programmata e per visualizzare quando il contenuto è stato reso disponibile.
8. intestazione_visibile
Tipo: Booleano. Se mostrare l'intestazione del sito web su questa pagina. Utile per le pagine di atterraggio o le esperienze a schermo intero in cui si desidera nascondere l'intestazione.
9. piè_di_pagina_visibile
Tipo: Booleano. Se mostrare il piè di pagina del sito web. Come intestazione_visibile, questo ti consente di creare pagine senza il piè di pagina standard.
10. è_homepage
Tipo: Booleano. Campo calcolato. Vero quando questa pagina è impostata come homepage del sito web. Solo una pagina per sito web può essere la homepage.
11. è_visibile
Tipo: Booleano. Calcolato. Indica se la pagina è visibile in base allo stato di pubblicazione, alla data e alle regole di visibilità.
12. menu_ids
Tipo: One2many (website.menu). Gli elementi di menu che collegano a questa pagina. Una pagina può apparire in più menu o in nessuno.
13. data_creazione
Tipo: Datetime. Quando il record è stato creato. Gestito automaticamente da Odoo. Utile per audit e report.
14. data_modifica
Tipo: Datetime. Quando il record è stato modificato per l'ultima volta. Anche gestito automaticamente. Aiuta a tenere traccia degli aggiornamenti dei contenuti.
15. arch
Tipo: Testo. Il template XML QWeb. Memorizzato nella vista ir.ui.view collegata. Contiene la struttura HTML e i frammenti Odoo. Modificabile tramite il costruttore di siti web.
16. chiave
Tipo: Char. Identificatore univoco per la vista. Utilizzato nel XML del modulo e per l'ereditarietà. Il formato è solitamente module.view_name.
17. tipo
Tipo: Selezione. Il tipo di vista. Per le pagine web, questo è sempre qweb. Altri tipi includono form, list e tree.
18. attivo
Tipo: Booleano. Flag di cancellazione soft. Quando è False, il record è archiviato. Proviene da ir.ui.view. Le pagine archiviate non vengono servite.
19. website_meta_title
Tipo: Char. Titolo meta SEO. Sovrascrive il titolo predefinito nei risultati di ricerca. Importante per la visibilità SEO.
20. website_meta_description
Tipo: Testo. Descrizione meta SEO. Il frammento mostrato nei risultati dei motori di ricerca. Mantienilo tra 150 e 160 caratteri per una migliore visualizzazione.
21. website_meta_keywords
Tipo: Char. Parole chiave meta. Meno importanti per il SEO moderno ma ancora utilizzate da alcuni sistemi. Separate da virgole.
22. header_overlay
Tipo: Booleano. Se l'intestazione sovrappone il contenuto. Utilizzato per pagine in stile hero dove l'intestazione si trova sopra il banner.
23. colore_intestazione
Tipo: Selezione. Schema di colore dell'intestazione. Opzioni come trasparente, chiaro o scuro. Influisce su contrasto e leggibilità.
24. visibilità
Tipo: Selezione. Controllo accessi. Le opzioni includono Pubblico, Accesso Autenticato, Gruppo Riservato o Con Password. Controlla chi può visualizzare la pagina.
25. tipo_reindirizzamento
Tipo: Selezione. Quando l'URL cambia, questo definisce il reindirizzamento: 301 permanente, 302 temporaneo o nessuno. Importante per la SEO quando si spostano le pagine.
Come viene utilizzato questo modello nei flussi di lavoro aziendali
1. Pagine di Atterraggio e Campagne
I team di marketing creano pagine di atterraggio per le campagne. Ogni pagina è un record website.page. Controllano URL, contenuto e data di pubblicazione. La pubblicazione programmata utilizza date_publish.
2. Pagine Aziendali
Chi Siamo, Contatti, Termini di Servizio e Informativa sulla Privacy sono tipicamente record website.page. Vengono creati una sola volta e aggiornati secondo necessità. Il posizionamento nel menu è gestito tramite menu_ids.
3. Pagine di Ringraziamento e Conferma
Pagine come "Modulo di contatto inviato" o "Compito ricevuto" sono record website.page. Imposta website_indexed su False affinché non appaiano nei risultati di ricerca.
4. Multi-Sito e Localizzazione
Nei setup multi-sito, website_id determina quale sito mostra la pagina. Puoi duplicare le pagine per sito con contenuti localizzati.
5. Contenuti Riservati e Accesso Limitato
Il campo visibilità ti consente di creare pagine solo per utenti con accesso, o per gruppi specifici. Utile per aree riservate ai membri o documentazione interna.
Come gli sviluppatori estendono questo modello
Gli sviluppatori estendono website.page utilizzando diversi modelli. L'ereditarietà dei modelli Odoo è il meccanismo principale.
Ereditarietà dei Modelli
Usa _inherit = 'website.page' per estendere il modello. Aggiungi nuovi campi Odoo, sovrascrivi metodi o aggiungi vincoli. Il modello ereditato in Odoo mantiene le tue modifiche in un modulo separato per aggiornamenti facili.
Aggiunta di Campi
Definisci nuovi campi Odoo nel tuo modello ereditato. Usa il tipo di campo corretto: Char, Many2one, Boolean, Integer, Text, Selection. Considera campi dipendenti dal sito per multi-sito.
Estensioni Python
Sovrascrivi create, write o unlink per aggiungere logica. Usa super() per chiamare l'originale. Fai attenzione alla relazione view_id e al comportamento di cascata.
Odoo Studio
Odoo Studio ti consente di personalizzare le pagine senza codice. Ottimo per modifiche rapide al layout. Per logiche complesse o contenuti basati su API, i moduli personalizzati sono più manutenibili.
Migliori pratiche
- Usa slug compatibili con gli URL. Evita spazi e caratteri speciali. Usa trattini per la leggibilità.
- Imposta website_indexed su False per le pagine di ringraziamento, le pagine di conferma e le pagine interne.
- Quando cambi gli URL, abilita il reindirizzamento (301 o 302) per preservare il valore SEO e evitare link interrotti.
- Compila website_meta_title e website_meta_description per ogni pagina pubblica. Questo migliora la visibilità SEO.
- Quando crei pagine tramite API o XML-RPC, crea prima l'ir.ui.view, poi la website.page con view_id. Assicurati che la vista abbia tipo qweb e una chiave unica.
Errori comuni
- Creazione di una website.page senza un view_id valido. La vista deve esistere e avere tipo qweb.
- Utilizzo di URL che non iniziano con una barra. Odoo si aspetta percorsi come /contactus, non contactus.
- Dimenticare di impostare website_indexed sulle pagine di ringraziamento. Esse finiscono nei risultati di ricerca e possono diluire il SEO.
- Cambiamento di un URL di pagina senza impostare un reindirizzamento. I vecchi link si rompono e i motori di ricerca perdono la connessione.
- Modifica dell'architettura di una vista che è stata modificata nel costruttore di siti web. Il flag noupdate in ir.model.data può impedire l'applicazione delle tue modifiche XML. Ripristinalo se necessario.
Conclusione
Il modello website.page è centrale nella gestione delle pagine statiche in Odoo. Memorizza i metadati delle pagine, gli URL e le impostazioni di pubblicazione. Il contenuto effettivo risiede nella vista ir.ui.view collegata.
Comprendere i suoi campi e come eredita da ir.ui.view ti aiuterà a configurare, personalizzare e integrare efficacemente i siti web Odoo. Che tu sia un consulente funzionale o uno sviluppatore, una solida comprensione di website.page ti farà risparmiare tempo e prevenire errori.
Hai bisogno di aiuto con la tua implementazione di Odoo?
Dasolo aiuta le aziende a implementare, personalizzare e ottimizzare Odoo. Siamo specializzati in integrazioni API e sviluppo Odoo. Il nostro team ha una profonda esperienza con l'architettura dei dati di Odoo e modelli come website.page.
Se hai bisogno di aiuto con la tua implementazione di Odoo, pagine web personalizzate o integrazioni, siamo qui per aiutarti. Prenota una demo per discutere del tuo progetto.