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.
I modelli Odoo sono la base dell'architettura dei dati. Definiscono i campi Odoo, le relazioni e la logica aziendale. Comprendere come funzionano i modelli è essenziale sia per gli sviluppatori che per i consulenti funzionali.
Questo articolo si concentra sul modello blog.post. Alimenta la funzionalità del blog sui siti web Odoo. Che tu stia creando contenuti tramite l'interfaccia utente, automatizzando i post tramite l'API o personalizzando l'esperienza del blog, lavorerai con questo modello.
Cos'è il modello blog.post
Il modello blog.post rappresenta un singolo articolo del blog in Odoo. Ogni record è un post che appare nel tuo blog del sito web.
Questo modello in Odoo fa parte del modulo website_blog. Funziona insieme a blog.blog (il contenitore del blog) e blog.tag (per la categorizzazione). Quando crei o modifichi un articolo del blog in Odoo, stai creando o aggiornando un record blog.post.
Il modello eredita da diversi mixin. Utilizza il mixin mail.thread per chatter e follower. Utilizza il mixin website.published.mixin per la logica di pubblicazione e dispubblicazione. Comprendere questa eredità del modello Odoo aiuta quando si estende il modello.
blog.post non è un modello astratto o transitorio di Odoo. È un modello regolare memorizzato. Tutti i post sono persistenti nel database e possono essere interrogati tramite l'API.
Campi chiave nel modello
Ecco i campi più importanti di Odoo nel modello blog.post. Comprendere questi ti aiuterà a lavorare in modo efficace con i contenuti del blog.
1. name
Tipo: Char. Questo campo memorizza il titolo del post del blog. È obbligatorio e viene visualizzato in elenchi, moduli e sul sito web. Il nome appare nella scheda del browser e nei risultati di ricerca.
2. blog_id
Tipo: Many2one (blog.blog). Collega il post al suo contenitore del blog. Ogni blog.post appartiene esattamente a un blog. Utilizza questo per organizzare i post in diverse sezioni del blog (ad es. Notizie, Aggiornamenti di prodotto, Guide tecniche).
3. subtitle
Tipo: Char. Un breve sottotitolo o tagline. Visualizzato sotto il titolo nella pagina del post e a volte negli elenchi del blog. Utile per SEO e leggibilità.
4. content
Tipo: Html. Il corpo principale dell'articolo. Memorizza contenuti HTML ricchi, inclusi testo, immagini e frammenti del sito web Odoo. Questo è il campo principale del contenuto.
5. teaser
Tipo: Testo. Teaser generato automaticamente dal contenuto. Odoo estrae un'anteprima da visualizzare nelle liste dei blog. Solo lettura e calcolato.
6. teaser_manual
Tipo: Testo. Sovrascrittura manuale del teaser. Quando impostato, questo sostituisce il teaser generato automaticamente nelle liste dei blog. Utilizzare per riassunti personalizzati che differiscono dal paragrafo di apertura.
7. author_id
Tipo: Many2one (res.partner). L'autore del post. Collega a un contatto o utente. Visualizzato nel post e nelle liste. Utile per blog con più autori.
8. author_name
Tipo: Char. Nome visualizzato calcolato dell'autore. Torna al nome visualizzato dell'autore quando author_id è impostato. Solo lettura.
9. author_avatar
Tipo: Binario. Immagine dell'avatar dell'autore. Visualizzata accanto al nome dell'autore nel post. Facoltativa.
10. is_published
Tipo: Booleano. Indica se il post è pubblicato e visibile sul sito web. Campo calcolato di sola lettura. Usa website_published per modificarlo.
11. website_published
Tipo: Booleano. Il campo scrivibile per pubblicare o dispubblicare. Imposta su True per rendere il post attivo. Imposta su False per metterlo in bozza. Questo determina is_published.
12. post_date
Tipo: Datetime. La data di pubblicazione mostrata ai visitatori. Utilizzata per ordinamento e visualizzazione. Può essere impostata nel futuro per post programmati.
13. published_date
Tipo: Datetime. La data effettiva in cui il post è stato pubblicato. Impostato automaticamente quando website_published diventa True. Utile per analisi.
14. active
Tipo: Booleano. Flag di soft delete. Quando False, il record è archiviato e nascosto dalle visualizzazioni predefinite. I post non vengono fisicamente eliminati per preservare la storia.
15. tag_ids
Tipo: Many2many (blog.tag). Tag per la categorizzazione. Utilizzati per filtrare e raggruppare i post. I tag possono avere categorie per un'organizzazione gerarchica.
16. visits
Tipo: Intero. Contatore delle visite. Solo lettura. Incrementato quando i visitatori visualizzano il post. Utilizzato per analisi e contenuti popolari.
17. website_url
Tipo: Char. Percorso URL completo del post sul sito web. Solo lettura. Formato: /blog/{blog-seo-name}-{blog-id}/{post-seo-name}-{post-id}.
18. cover_properties
Tipo: Testo. Stringa JSON che memorizza le proprietà dell'immagine di copertura. Controlla la posizione, la sovrapposizione e la visualizzazione dell'immagine di copertura del blog. Utilizzato dal frontend.
19. header_visible
Tipo: Booleano. Se mostrare l'intestazione del sito web nella pagina del post. Utile per post a larghezza intera o incorporati.
20. footer_visible
Tipo: Booleano. Se mostrare il piè di pagina del sito web nella pagina del post. Spesso abbinato a header_visible.
21. seo_name
Tipo: Char. Slug URL ottimizzato per SEO. Determina il percorso URL. Esempio: my-post-title diventa /blog/my-blog-1/my-post-title-1. Generato automaticamente dal nome se vuoto.
22. website_meta_title
Tipo: Char. Meta titolo per i motori di ricerca. Mostrato nella scheda del browser e nei risultati di ricerca. Importante per la SEO.
23. website_meta_description
Tipo: Testo. Meta descrizione per i motori di ricerca. Mostrata nei frammenti di ricerca. Mantieni tra 150-160 caratteri per la migliore visualizzazione.
24. website_meta_keywords
Tipo: Char. Meta parole chiave. Meno importanti per la SEO oggi, ma ancora utilizzate da alcuni sistemi.
25. create_date
Tipo: Datetime. Memorizza la data in cui è stato creato il record. Gestito automaticamente da Odoo. Utile per report e audit.
26. create_uid
Tipo: Many2one (res.users). Utente che ha creato il record. Impostato automaticamente. Solo in lettura.
27. write_date
Tipo: Datetime. Data dell'ultima modifica. Gestito automaticamente. Aiuta a tenere traccia di quando il contenuto è stato aggiornato per l'ultima volta.
28. write_uid
Tipo: Many2one (res.users). Utente che ha modificato per ultimo il record. Solo lettura.
29. display_name
Tipo: Char. Nome visualizzato calcolato. Utilizzato nei menu a discesa many2one e nei risultati di ricerca. Solo lettura.
30. website_id
Tipo: Many2one (website). In configurazioni multi-sito, il sito web a cui appartiene questo post. Facoltativo; se vuoto, il post può apparire su tutti i siti web.
Come questo modello viene utilizzato nei flussi di lavoro aziendali
1. Content Marketing e SEO
I team di marketing creano record blog.post per pubblicare articoli. Utilizzano website_meta_title, website_meta_description e seo_name per ottimizzare la ricerca. Il campo contenuto contiene l'intero articolo. I tag aiutano a organizzare i contenuti per argomento.
2. Siti Web Multi-Blog
Le aziende gestiscono più blog (Notizie, Aggiornamenti Prodotto, Documentazione Tecnica). Ogni blog.blog ha molti record blog.post. Il campo blog_id collega ogni post alla sua categoria. I visitatori navigano per blog e filtrano per tag.
3. Contenuti Guidati da API
Le integrazioni creano record blog.post tramite XML-RPC o JSON-RPC. I casi d'uso includono l'importazione da un CMS, la sincronizzazione da un blog headless o l'automazione della creazione di post da sistemi interni. Il modello API in Odoo espone blog.post per creare, leggere, aggiornare e cercare.
4. Pubblicazione Programmata
Imposta post_date su una data futura e website_published su True. Odoo visualizza il post quando la data viene raggiunta. Utile per calendari di contenuti e campagne temporizzate.
5. Multi-autore e Collaborazione
Il campo author_id e il mixin mail.thread supportano la collaborazione. Gli autori sono assegnati per post. I follower vengono notificati delle modifiche. Chatter consente commenti interni prima della pubblicazione.
Come gli sviluppatori estendono questo modello
Gli sviluppatori estendono blog.post utilizzando diversi modelli. L'ereditarietà del modello Odoo è il meccanismo principale.
Ereditarietà del Modello
Usa _inherit = 'blog.post' 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. blog.post eredita da mail.thread e website.published.mixin; comprendi questi aspetti quando sovrascrivi.
Aggiunta di Campi
Definisci nuovi campi Odoo nel tuo modello ereditato. Usa il tipo di campo corretto: Char, Many2one, Boolean, Integer, Text, Selection. Per metadati personalizzati (tempo di lettura, categorie personalizzate), aggiungi campi ed esponili nelle viste. Usa il prefisso x_ per i campi personalizzati per evitare conflitti.
Estensioni Python
Sovrascrivi create, write o unlink per aggiungere logica. Usa super() per chiamare l'originale. Fai attenzione a website_published e post_date. Il modello ha campi calcolati dal mixin del sito web. Sovrascrivi _compute_website_url se hai bisogno di logica URL personalizzata.
Odoo Studio
Odoo Studio ti consente di aggiungere campi senza codice. Utile per personalizzazioni rapide come metadati extra. Per logica complessa, integrazioni API o viste personalizzate, i moduli personalizzati sono più manutenibili. Il modello API in Odoo (blog.post) è completamente esposto tramite XML-RPC e JSON-RPC.
Migliori pratiche
- Imposta website_meta_title e website_meta_description per ogni post. Migliorano la visibilità SEO.
- Usa teaser_manual per le liste di blog quando il teaser generato automaticamente non si adatta. I teaser personalizzati spesso performano meglio.
- Imposta seo_name esplicitamente per i post importanti. Evita caratteri speciali che possono rompere gli URL.
- Quando costruisci integrazioni API, usa website_published per pubblicare. Non fare affidamento su is_published per le scritture.
- Usa tag_ids per una categorizzazione coerente. Crea i tag in anticipo e riutilizzali nei post.
Errori comuni
- Scrivere su is_published invece di website_published. is_published è di sola lettura. Usa sempre website_published per pubblicare o rimuovere la pubblicazione.
- Dimenticare di impostare blog_id. È richiesto. I post senza un blog non verranno visualizzati correttamente.
- Lasciare website_meta_description vuoto. I motori di ricerca possono utilizzare contenuti casuali dalla pagina. Fornisci sempre una descrizione chiara di 150-160 caratteri.
- Sovrascrivere metodi core senza chiamare super(). Questo può rompere il comportamento del mixin del sito web o di mail.thread.
- Creare valori seo_name duplicati all'interno dello stesso blog. Gli URL possono entrare in conflitto. Lascia che Odoo generi automaticamente o assicurati che siano unici.
Conclusione
Il modello blog.post è centrale per il blog del sito web di Odoo. Memorizza ogni articolo, il suo contenuto, i metadati e lo stato di pubblicazione. Comprendere i suoi campi Odoo e come si relaziona a blog.blog e blog.tag ti aiuterà a configurare, personalizzare e integrare efficacemente i contenuti del blog.
Che tu sia un consulente funzionale che gestisce contenuti o uno sviluppatore che costruisce integrazioni API, una solida comprensione di blog.post 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 blog.post.
Se hai bisogno di aiuto con la tua implementazione di Odoo, moduli personalizzati o integrazioni, siamo qui per aiutarti. Prenota una demo per discutere del tuo progetto.