Das Inhaltsmodell für Ingenieure
Diese Seite richtet sich an Ingenieure, die das Inhaltsmodell als Datenmodell verstehen müssen, bevor sie darauf aufbauen: was die Entitäten sind, welche Kernel-Klasse jede darstellt und was daraus für Abfragen, Migrationen und APIs folgt. Die Sicht der Redakteure auf dasselbe Modell steht unter Das Inhaltsmodell und das Bearbeiten von Inhalten.
Inhalt
- Die Entitäten
- Ein zur Laufzeit festgelegtes Schema
- Versionen und Übersetzungen
- Der Baum
- Datentypen
- Folgen für Ingenieure
Die Entitäten
| Entität | Bedeutung | Kernel-Klasse |
|---|---|---|
| Inhaltsklasse | ein Inhaltstyp: Name, Bezeichner, Attribute | eZContentClass |
| Klassenattribut | ein Feld einer Klasse, mit einem Datentyp und seinen Einstellungen | eZContentClassAttribute |
| Inhaltsobjekt | ein Inhalt, eine Instanz einer Klasse | eZContentObject |
| Version | ein Zustand eines Objekts: Entwurf, veröffentlicht, archiviert | eZContentObjectVersion |
| Objektattribut | der Wert eines Klassenattributs in einer Version und einer Sprache | eZContentObjectAttribute |
| Knoten (Platzierung) | ein Platz eines Objekts im Inhaltsbaum; ein Objekt kann mehrere haben | eZContentObjectTreeNode |
| Datentyp | Speicherung, Prüfung, Bearbeitung und Indexierung einer Art von Attribut | Unterklassen von eZDataType |
| Sektion | eine Aufteilung der Inhalte, die Berechtigungen und Designs verwenden | eZSection |
| Objektzustand | ein Wert aus einer Zustandsgruppe, in Berechtigungen verwendbar | eZContentObjectState |
Ein zur Laufzeit festgelegtes Schema
Inhaltsklassen sind Daten, kein Code. Administratoren fügen in der Administration ohne Bereitstellung Klassen und
Attribute hinzu, und die Tabellen ändern sich nicht: Attributwerte liegen in allgemeinen Spalten von
ezcontentobject_attribute und werden vom Datentyp interpretiert. Klassen lassen sich auch in Paketen ausliefern
(Pakete).
Diese Flexibilität hat einen Preis: Eine Abfrage nach einem Feldwert ist ein Join über die Attributtabelle, gefiltert nach Klassenattribut; verwenden Sie die Fetch-Funktionen und ihre Attributfilter statt handgeschriebenem SQL.
Versionen und Übersetzungen
- Jede Bearbeitung erzeugt eine neue Version; das Veröffentlichen macht sie zur aktuellen Version. Unveröffentlichte Bearbeitungen bleiben als Entwürfe.
- Die Zahl der aufbewahrten archivierten Versionen ist je Klasse durch
content.ini [VersionManagement]begrenzt (DefaultVersionHistoryLimit,VersionHistoryClass[]);exp:cleanupversionsentfernt alte Versionen (lesen Sie zuerst sein--help: ohne löscht es). - Jedes Objektattribut existiert je Sprache. Welche Sprachen ein Siteaccess zeigt und der Rückfall sind Einstellungen (Inhaltssprachen, Rückfall-Gebietsschema für Inhaltsobjekte).
Der Baum
Knoten bilden einen Baum; jeder Knoten hat einen übergeordneten Knoten, einen Pfad und eine Tiefe. Knoten 2 ist in einer Standardinstallation die Wurzel des Inhaltsbaums. Berechtigungen mit Teilbaum-Einschränkungen, URL-Aliase und die meisten Listen folgen dem Baum; seine Form ist also Teil Ihres Entwurfs. Das Verschieben oder Verbergen eines Knotens ändert die URLs und die Sichtbarkeit von allem darunter.
Datentypen
Ein Datentyp ist der Erweiterungspunkt des Inhaltsmodells: eine PHP-Klasse, die eine Art von Attribut speichert, prüft,
bearbeitet, ausgibt und indexiert. Datentypen registrieren sich in settings/content.ini [DataTypeSettings] AvailableDataTypes[]; eine Erweiterung fügt ihre eigenen über ExtensionDirectories[] hinzu. Ein Datentyp muss
Eingaben in validateObjectAttributeHTTPInput() prüfen und darf das gespeicherte Format vorhandener Attribute nicht
ohne Aktualisierungsskript ändern (Eigene Datentypen,
Lebenszyklus eines Datentyps).
Folgen für Ingenieure
| Thema | Folge |
|---|---|
| Lesen | Fetch-Funktionen (Templates) oder die Inhalts-API (PHP) verwenden; sie wenden Berechtigungen an (Die Inhalts-API) |
| Schreiben | über den Kernel anlegen und veröffentlichen, damit Versionen, Caches, Suche und Audit-Trail stimmig bleiben (Inhalte im Code anlegen) |
| Migrationen der Inhaltsstruktur | Klassenänderungen sind Datenänderungen; planen Sie sie mit Paketen oder Skripten, nicht mit SQL |
| APIs | die REST-API stellt Objekte, Knoten und Attribute mit denselben Berechtigungsprüfungen bereit (API-Design) |
| Große Operationen | Entfernen, Kopieren und Verschieben großer Teilbäume laufen als Inhaltsjobs im Hintergrund (Inhaltsjobs) |
| Caches | ein Veröffentlichen leert die View-Caches der betroffenen Knoten über eZContentCacheManager (Cache-Invalidierung und Leeren) |
Verwandte Seiten
- Persistenz und die Datenbankschicht
- Inhaltsfunktionen aus PHP
- Referenz zu eZContentObject
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.