Einführung
In Odoo definieren Modelle, wie Daten strukturiert und in der Datenbank gespeichert werden. Jedes Stück Geschäftsdaten, mit dem Sie arbeiten, lebt in einem Modell.
Odoo-Modelle sind die Grundlage der Datenarchitektur. Sie definieren Odoo-Felder, Beziehungen und Geschäftslogik. Zu verstehen, wie Modelle funktionieren, ist für Entwickler und funktionale Berater von entscheidender Bedeutung.
Dieser Artikel konzentriert sich auf das blog.post Modell. Es steuert die Blog-Funktionalität auf Odoo-Websites. Egal, ob Sie Inhalte über die Benutzeroberfläche erstellen, Beiträge über die API automatisieren oder das Blog-Erlebnis anpassen, Sie werden mit diesem Modell arbeiten.
Was ist das blog.post Modell
Das blog.post-Modell repräsentiert einen einzelnen Blogartikel in Odoo. Jeder Datensatz ist ein Beitrag, der auf Ihrem Website-Blog erscheint.
Dieses Modell in Odoo ist Teil des website_blog-Moduls. Es arbeitet zusammen mit blog.blog (dem Blog-Container) und blog.tag (zur Kategorisierung). Wenn Sie einen Blogartikel in Odoo erstellen oder bearbeiten, erstellen oder aktualisieren Sie einen blog.post-Datensatz.
Das Modell erbt von mehreren Mixins. Es verwendet das mail.thread-Mixin für Chatter und Follower. Es verwendet das website.published.mixin für die Logik zum Veröffentlichen und Deaktivieren. Das Verständnis dieser Odoo-Modellvererbung hilft beim Erweitern des Modells.
blog.post ist kein abstraktes Modell oder transienter Modell in Odoo. Es ist ein reguläres gespeichertes Modell. Alle Beiträge werden in der Datenbank gespeichert und können über die API abgefragt werden.
Wichtige Felder im Modell
Hier sind die wichtigsten Odoo-Felder im blog.post-Modell. Das Verständnis dieser Felder wird Ihnen helfen, effektiv mit Blog-Inhalten zu arbeiten.
1. name
Typ: Char. Dieses Feld speichert den Titel des Blogbeitrags. Es ist erforderlich und wird in Listen, Formularen und auf der Website angezeigt. Der Name erscheint im Browser-Tab und in den Suchergebnissen.
2. blog_id
Typ: Many2one (blog.blog). Verknüpft den Beitrag mit seinem Blog-Container. Jeder blog.post gehört genau zu einem Blog. Verwenden Sie dies, um Beiträge in verschiedene Blogabschnitte zu organisieren (z. B. Nachrichten, Produktaktualisierungen, technische Anleitungen).
3. subtitle
Typ: Char. Ein kurzer Untertitel oder Slogan. Wird unter dem Titel auf der Beitragsseite und manchmal in Blog-Listings angezeigt. Nützlich für SEO und Lesbarkeit.
4. content
Typ: Html. Der Hauptteil des Artikels. Speichert reichhaltigen HTML-Inhalt, einschließlich Text, Bilder und Odoo-Website-Snippets. Dies ist das primäre Inhaltsfeld.
5. Teaser
Typ: Text. Automatisch generierter Teaser aus dem Inhalt. Odoo extrahiert eine Vorschau zur Anzeige in Blog-Listings. Nur lesbar und berechnet.
6. teaser_manual
Typ: Text. Manuelle Teaser-Überschreibung. Wenn gesetzt, ersetzt dies den automatisch generierten Teaser in Blog-Listings. Verwenden Sie dies für benutzerdefinierte Zusammenfassungen, die sich vom einleitenden Absatz unterscheiden.
7. author_id
Typ: Many2one (res.partner). Der Autor des Beitrags. Verknüpft mit einem Kontakt oder Benutzer. Wird im Beitrag und in Listings angezeigt. Nützlich für Blogs mit mehreren Autoren.
8. author_name
Typ: Char. Berechneter Anzeigename des Autors. Fällt auf den Anzeigenamen des Autors zurück, wenn author_id gesetzt ist. Nur lesbar.
9. author_avatar
Typ: Binary. Avatarbild des Autors. Wird neben dem Autorennamen im Beitrag angezeigt. Optional.
10. ist_veröffentlicht
Typ: Boolean. Ob der Beitrag veröffentlicht und auf der Website sichtbar ist. Nur lesbares berechnetes Feld. Verwenden Sie website_published, um dies zu ändern.
11. website_published
Typ: Boolean. Das beschreibbare Feld zum Veröffentlichen oder Nichtveröffentlichen. Auf True setzen, um den Beitrag live zu schalten. Auf False setzen, um ihn als Entwurf zu speichern. Dies steuert is_published.
12. post_date
Typ: Datetime. Das Veröffentlichungsdatum, das den Besuchern angezeigt wird. Wird zum Sortieren und Anzeigen verwendet. Kann in der Zukunft für geplante Beiträge festgelegt werden.
13. published_date
Typ: Datetime. Das tatsächliche Datum, an dem der Beitrag veröffentlicht wurde. Wird automatisch festgelegt, wenn website_published auf True gesetzt wird. Nützlich für Analysen.
14. active
Typ: Boolean. Soft-Delete-Flag. Wenn False, wird der Datensatz archiviert und aus den Standardansichten ausgeblendet. Beiträge werden nicht physisch gelöscht, um die Historie zu bewahren.
15. tag_ids
Typ: Many2many (blog.tag). Tags zur Kategorisierung. Wird verwendet, um Beiträge zu filtern und zu gruppieren. Tags können Kategorien für eine hierarchische Organisation haben.
16. visits
Typ: Ganzzahl. Besuchszähler. Nur lesbar. Wird erhöht, wenn Besucher den Beitrag ansehen. Wird für Analysen und beliebte Inhalte verwendet.
17. website_url
Typ: Zeichenfolge. Vollständiger URL-Pfad zum Beitrag auf der Website. Nur lesbar. Format: /blog/{blog-seo-name}-{blog-id}/{post-seo-name}-{post-id}.
18. cover_properties
Typ: Text. JSON-String, der die Eigenschaften des Coverbildes speichert. Steuert die Positionierung, Überlagerung und Anzeige des Blog-Coverbildes. Wird vom Frontend verwendet.
19. header_visible
Typ: Boolean. Ob die Website-Header auf der Beitragsseite angezeigt werden soll. Nützlich für Vollbreiten- oder eingebettete Beiträge.
20. footer_visible
Typ: Boolean. Ob die Website-Fußzeile auf der Beitragsseite angezeigt werden soll. Oft zusammen mit header_visible verwendet.
21. seo_name
Typ: Zeichenfolge. SEO-freundlicher URL-Slug. Bestimmt den URL-Pfad. Beispiel: my-post-title wird zu /blog/my-blog-1/my-post-title-1. Automatisch aus dem Namen generiert, wenn leer.
22. website_meta_title
Typ: Char. Meta-Titel für Suchmaschinen. Wird im Browser-Tab und in den Suchergebnissen angezeigt. Wichtig für SEO.
23. website_meta_description
Typ: Text. Meta-Beschreibung für Suchmaschinen. Wird in Such-Snippets angezeigt. Halten Sie sich an 150-160 Zeichen für die beste Anzeige.
24. website_meta_keywords
Typ: Char. Meta-Keywords. Heute weniger wichtig für SEO, wird aber von einigen Systemen weiterhin verwendet.
25. create_date
Typ: Datetime. Speichert das Datum, an dem der Datensatz erstellt wurde. Wird automatisch von Odoo verwaltet. Nützlich für Berichterstattung und Audits.
26. create_uid
Typ: Many2one (res.users). Benutzer, der den Datensatz erstellt hat. Wird automatisch festgelegt. Nur lesbar.
27. write_date
Typ: Datetime. Datum der letzten Änderung. Wird automatisch verwaltet. Hilft dabei, nachzuvollziehen, wann der Inhalt zuletzt aktualisiert wurde.
28. write_uid
Typ: Many2one (res.users). Benutzer, der den Datensatz zuletzt geändert hat. Nur lesbar.
29. display_name
Typ: Char. Berechneter Anzeigename. Wird in Many2one-Dropdowns und Suchergebnissen verwendet. Nur lesbar.
30. website_id
Typ: Many2one (website). In Multi-Website-Setups die Website, zu der dieser Beitrag gehört. Optional; wenn leer, kann der Beitrag auf allen Websites erscheinen.
Wie dieses Modell in Geschäftsabläufen verwendet wird
1. Content-Marketing und SEO
Marketing-Teams erstellen blog.post-Datensätze, um Artikel zu veröffentlichen. Sie verwenden website_meta_title, website_meta_description und seo_name, um für die Suche zu optimieren. Das Inhaltsfeld enthält den vollständigen Artikel. Tags helfen, Inhalte nach Thema zu organisieren.
2. Multi-Blog-Websites
Unternehmen betreiben mehrere Blogs (Nachrichten, Produktaktualisierungen, technische Dokumente). Jeder blog.blog hat viele blog.post-Datensätze. Das blog_id-Feld verknüpft jeden Beitrag mit seiner Kategorie. Besucher durchsuchen nach Blog und filtern nach Tag.
3. API-gesteuerte Inhalte
Integrationen erstellen blog.post-Datensätze über XML-RPC oder JSON-RPC. Anwendungsfälle umfassen den Import aus einem CMS, die Synchronisierung von einem headless Blog oder die Automatisierung der Beitragserstellung aus internen Systemen. Das API-Modell in Odoo stellt blog.post für Erstellen, Lesen, Aktualisieren und Suchen zur Verfügung.
4. Geplante Veröffentlichung
Setzen Sie post_date auf ein zukünftiges Datum und website_published auf True. Odoo zeigt den Beitrag an, wenn das Datum erreicht ist. Nützlich für Inhaltskalender und zeitgesteuerte Kampagnen.
5. Mehrere Autoren und Zusammenarbeit
Das Feld author_id und das mail.thread Mixin unterstützen die Zusammenarbeit. Autoren werden pro Beitrag zugewiesen. Follower werden über Änderungen benachrichtigt. Chatter ermöglicht interne Kommentare vor der Veröffentlichung.
Wie Entwickler dieses Modell erweitern
Entwickler erweitern blog.post mit verschiedenen Mustern. Die Vererbung von Modellen in Odoo ist der Hauptmechanismus.
Modellvererbung
Verwenden Sie _inherit = 'blog.post', um das Modell zu erweitern. Fügen Sie neue Odoo-Felder hinzu, überschreiben Sie Methoden oder fügen Sie Einschränkungen hinzu. Das vererbte Modell in Odoo hält Ihre Änderungen in einem separaten Modul für einfache Upgrades. blog.post erbt von mail.thread und website.published.mixin; verstehen Sie diese, wenn Sie überschreiben.
Felder hinzufügen
Definieren Sie neue Odoo-Felder in Ihrem vererbten Modell. Verwenden Sie den richtigen Feldtyp: Char, Many2one, Boolean, Integer, Text, Auswahl. Für benutzerdefinierte Metadaten (Lesezeit, benutzerdefinierte Kategorien) fügen Sie Felder hinzu und machen Sie sie in Ansichten sichtbar. Verwenden Sie das Präfix x_ für benutzerdefinierte Felder, um Konflikte zu vermeiden.
Python-Erweiterungen
Überschreiben Sie create, write oder unlink, um Logik hinzuzufügen. Verwenden Sie super(), um das Original aufzurufen. Seien Sie vorsichtig mit website_published und post_date. Das Modell hat berechnete Felder aus dem Website-Mixin. Überschreiben Sie _compute_website_url, wenn Sie benutzerdefinierte URL-Logik benötigen.
Odoo Studio
Odoo Studio ermöglicht es Ihnen, Felder ohne Code hinzuzufügen. Gut für schnelle Anpassungen wie zusätzliche Metadaten. Für komplexe Logik, API-Integrationen oder benutzerdefinierte Ansichten sind benutzerdefinierte Module wartungsfreundlicher. Das API-Modell in Odoo (blog.post) ist vollständig über XML-RPC und JSON-RPC verfügbar.
Best Practices
- Setzen Sie website_meta_title und website_meta_description für jeden Beitrag. Sie verbessern die SEO-Sichtbarkeit.
- Verwenden Sie teaser_manual für Blog-Listings, wenn der automatisch generierte Teaser nicht passt. Individuelle Teaser schneiden oft besser ab.
- Setzen Sie seo_name ausdrücklich für wichtige Beiträge. Vermeiden Sie Sonderzeichen, die URLs brechen können.
- Beim Erstellen von API-Integrationen verwenden Sie website_published zum Veröffentlichen. Verlassen Sie sich nicht auf is_published für Schreibvorgänge.
- Verwenden Sie tag_ids für eine konsistente Kategorisierung. Erstellen Sie Tags im Voraus und verwenden Sie sie in mehreren Beiträgen.
Häufige Fehler
- Schreiben in is_published anstelle von website_published. is_published ist schreibgeschützt. Verwenden Sie immer website_published, um zu veröffentlichen oder die Veröffentlichung aufzuheben.
- Vergessen, blog_id festzulegen. Es ist erforderlich. Beiträge ohne einen Blog werden nicht korrekt angezeigt.
- Das website_meta_description leer lassen. Suchmaschinen können zufällige Inhalte von der Seite verwenden. Geben Sie immer eine klare Beschreibung von 150-160 Zeichen an.
- Kernmethoden überschreiben, ohne super() aufzurufen. Dies kann das Verhalten des Website-Mixins oder von mail.thread beeinträchtigen.
- Doppelte seo_name-Werte innerhalb desselben Blogs erstellen. URLs können in Konflikt geraten. Lassen Sie Odoo automatisch generieren oder stellen Sie die Einzigartigkeit sicher.
Fazit
Das blog.post-Modell ist zentral für Odoos Website-Blog. Es speichert jeden Artikel, seinen Inhalt, Metadaten und den Veröffentlichungsstatus. Das Verständnis seiner Odoo-Felder und wie es sich auf blog.blog und blog.tag bezieht, wird Ihnen helfen, Blog-Inhalte effektiv zu konfigurieren, anzupassen und zu integrieren.
Egal, ob Sie ein funktionaler Berater sind, der Inhalte verwaltet, oder ein Entwickler, der API-Integrationen erstellt, ein solides Verständnis von blog.post wird Zeit sparen und Fehler verhindern.
Brauchen Sie Hilfe bei Ihrer Odoo-Implementierung?
Dasolo hilft Unternehmen bei der Implementierung, Anpassung und Optimierung von Odoo. Wir sind auf API-Integrationen und Odoo-Entwicklung spezialisiert. Unser Team verfügt über umfassende Erfahrung mit der Odoo-Datenarchitektur und Modellen wie blog.post.
Wenn Sie Hilfe bei Ihrer Odoo-Implementierung, benutzerdefinierten Modulen oder Integrationen benötigen, sind wir hier, um zu helfen. Vereinbaren Sie eine Demo um Ihr Projekt zu besprechen.