Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Das Inhaltsmodell für ORM-Nutzer

Inhaltsklassen, Inhaltsobjekte, Versionen, Übersetzungen, Knoten, Datentypen, Bereiche und Objektzustände in der Sprache eines ORM erklärt - was jedes davon in der Datenbank und in PHP ist, wie sich ein typischer Blog…

Download as PDF

Address: https://doc.exponential.earth/learninminutes/exphelp/viewer/help/web-framework-developers/the-content-model-for-orm-users.md

On this page

This page is a translation. Read the English original

Das Inhaltsmodell für ORM-Nutzer

Diese Seite richtet sich an Entwickler, die ein Projekt beginnen würden, indem sie Entity-Klassen und Migrationen schreiben. In Exponential sind die meisten Daten, die Redakteure pflegen, Inhalte: Sie definieren deren Typen in der Administrationsoberfläche (oder liefern sie als Pakete aus), und der Kernel speichert, versioniert, übersetzt, berechtigt, cacht und indiziert sie. Ihr Code liest und schreibt Inhalte über die Inhalts-API statt über eine eigene Model-Klasse.

Inhalt

  1. Die Bausteine in ORM-Begriffen
  2. Datentypen
  3. Versionen und Übersetzungen
  4. Knoten: ein Objekt, mehrere Orte
  5. Bereiche, Zustände und Beziehungen
  6. Ein Blog, abgebildet
  7. Lesen und Schreiben aus Code

Die Bausteine in ORM-Begriffen

ExponentialNächste ORM-EntsprechungKlasse
Inhaltsklasse (Artikel: Titel, Einleitung, Haupttext, Bild)eine Entity- oder Model-DefinitioneZContentClass
Klassenattributeine Felddefinition mit Typ und EinstellungeneZContentClassAttribute
Inhaltsobjekteine Zeile der Entity, mit ihrer HistorieeZContentObject
Versioneine Revision der Zeile: Entwurf, veröffentlicht, archiviert und weitereeZContentObjectVersion
Objektattributder Wert eines Felds, pro Version und SpracheeZContentObjectAttribute
Knoten (Platzierung)wo die Zeile im Seitenbaum erscheint; Eltern und KindereZContentObjectTreeNode
Remote-IDein stabiler externer Schlüssel, den Sie selbst wählen, anders als die numerische IDremote_id von Objekten und Knoten

Die Sicht des Administrators auf dieselben Begriffe: Das Inhaltsmodell und das Bearbeiten von Inhalten.

Datentypen

Jedes Klassenattribut hat einen Datentyp, der Spaltentyp, Formular-Widget, Validator und Renderer in einem ist: ezstring (eine Zeile), eztext, ezxmltext (Rich Text), ezinteger, ezfloat, ezboolean, ezdate, ezdatetime, ezemail, ezurl, ezimage, ezbinaryfile, ezobjectrelationlist, ezselection, ezmatrix, ezuser und weitere (die mitgelieferten liegen in kernel/classes/datatypes/). Welche für neue Attribute angeboten werden, steht in content.ini [DataTypeSettings] AvailableDataTypes[]. Eine neue Art von Feld ist eine Datentyp-Klasse in Ihrer Erweiterung, die eZDataType erweitert (Eigene Datentypen).

Versionen und Übersetzungen

  • Jede Bearbeitung erzeugt eine Version; das Veröffentlichen macht sie aktuell und archiviert die vorherige. Entwürfe sind Versionen mit eigenem Status (eZContentObjectVersion::STATUS_DRAFT, STATUS_PUBLISHED, STATUS_ARCHIVED und weitere).
  • Jede Version enthält die Attributwerte für jede Sprache, in die sie übersetzt ist. Welche Sprache ein Siteaccess anzeigt, richtet sich nach seiner SiteLanguageList (Inhaltssprachen).
  • Historie, Vergleichen und Wiederherstellen sind inbegriffen; Sie schreiben nichts davon selbst.

Knoten: ein Objekt, mehrere Orte

Ein Objekt wird über Knoten im Baum platziert. Ein Objekt kann mehrere Knoten haben (derselbe Artikel unter „Nachrichten“ und unter „Sport“); einer davon ist sein Hauptknoten. Der Baum liefert Ihnen Navigation, URL-Aliase, Berechtigungen für Teilbäume und Abfragen über Teilbäume (path_string, depth). Eine eigene Tabelle für „Kategorien“ müssen Sie nicht entwerfen, es sei denn, Sie wollen eine.

Bereiche, Zustände und Beziehungen

FunktionZweckLesen
Bereicheine Gruppe von Inhalten für Berechtigungen und Design (Standard, Benutzer, Medien ...)Bereiche
Objektzustandein workflowartiger Status pro Objekt (zum Beispiel „gesperrt“, „in Prüfung“), verwendbar in Richtlinien und Request-RegelnObjektzustände
Objektbeziehungeine Verknüpfung von einem Objekt zu anderen, mit Rückwärtssuche gepflegtDie Inhalts-API

Ein Blog, abgebildet

Vorgehen im FrameworkVorgehen in Exponential
Tabelle posts, Model Post, MigrationKlasse blog_post (Titel, Einleitung, Haupttext, Bild, Tags), angelegt unter Setup > Klassen oder aus einem Paket installiert
Tabelle categories, FremdschlüsselOrdner im Baum, ein Beziehungsattribut oder Tags aus eztags
Tabelle post_revisionsVersionen, eingebaut
Tabelle post_translationsÜbersetzungen, eingebaut
Spalte slug, eindeutiger IndexURL-Alias, eingebaut (Sprechende URLs)
CRUD-Masken für die Administrationdie Administrationsoberfläche, eingebaut
Policy-Klasse pro ModelRollen mit content/read, content/edit, eingeschränkt nach Klasse, Bereich, Teilbaum (Autorisierung)
Controller und Templates für das FrontendOverride-Templates für die Voll- und Zeilenansicht der Klasse (Template-Auflösung)

Lesen und Schreiben aus Code

$node   = eZContentObjectTreeNode::fetchByURLPath( 'about_us' );
$object = eZContentObject::fetchByRemoteID( 'expdemo-settings-page' );
$title  = $object->dataMap()['title']->content();

$article = eZContentFunctions::createAndPublishObject( array(
    'creator_id'       => $userID,
    'class_identifier' => 'article',
    'parent_node_id'   => $parentNodeID,
    'remote_id'        => 'feed-item-' . $externalID,
    'attributes'       => array( 'title' => 'A new article' ) ) );

Regeln:

  • Schreiben Sie Inhalte nur über die Inhalts-API (eZContentFunctions, Operationen), niemals per SQL in die Inhaltstabellen: Das Veröffentlichen führt Workflows aus, leert Caches und aktualisiert den Suchindex.
  • Bevorzugen Sie Remote-IDs für Inhalte, von denen Ihr Code abhängt; numerische IDs unterscheiden sich zwischen Installationen.
  • Setzen Sie ein Limit bei jedem Listen-Fetch.

Vollständige Referenz: Die Inhalts-API in PHP und Inhalte im Code anlegen und aktualisieren.

Verwandte Seiten

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.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x