Die Content-API
Diese Seite richtet sich an Anwendungsentwickler, die Inhalte in PHP lesen: in Ansichten, Diensten, Befehlen und
Cronjobs. Die Klassen sind eZContentObject, eZContentObjectTreeNode und eZContentObjectAttribute des Kernels in
kernel/classes/.
Inhalt
- Objekte, Knoten und Attribute
- Ein einzelnes Element abrufen
- Listen abrufen
- Attribute lesen
- Versionen und Sprachen
- Rechte und Kontext
Objekte, Knoten und Attribute
| Klasse | Ist | Wichtige Attribute |
|---|---|---|
eZContentObject | ein Inhalt mit allen seinen Versionen und Übersetzungen | id, remote_id, name, current_version, main_node_id, class_identifier, section_id |
eZContentObjectTreeNode | eine Platzierung eines Objekts | node_id, parent_node_id, path_string, url_alias, depth, object |
eZContentObjectAttribute | ein Feld einer Version in einer Sprache | data_type_string, content, has_content, contentclass_attribute_identifier |
Ein einzelnes Element abrufen
$object = eZContentObject::fetch( 57 );
$object = eZContentObject::fetchByRemoteID( 'expdemo-settings-page' );
$node = eZContentObjectTreeNode::fetch( 2 );
$node = eZContentObjectTreeNode::fetchByURLPath( 'about_us' );Verwenden Sie für Inhalte, von denen Ihre Anwendung abhängt, bevorzugt Remote-IDs: Sie sind über Installationen hinweg stabil, IDs nicht.
Listen abrufen
$nodes = eZContentObjectTreeNode::subTreeByNodeID( array(
'ClassFilterType' => 'include',
'ClassFilterArray' => array( 'event' ),
'AttributeFilter' => array( array( 'event/start_date', '>=', time() ) ),
'SortBy' => array( array( 'attribute', true, 'event/start_date' ) ),
'Depth' => 3,
'Limit' => 20,
'Offset' => 0 ), $parentNodeID );
$count = eZContentObjectTreeNode::subTreeCountByNodeID( array(
'ClassFilterType' => 'include', 'ClassFilterArray' => array( 'event' ) ), $parentNodeID );Das ist die PHP-Seite der Template-Fetches (Fetch-Funktionen: Daten in Templates lesen). Setzen
Sie immer ein Limit.
Attribute lesen
$dataMap = $object->dataMap(); // identifier => eZContentObjectAttribute
if ( isset( $dataMap['title'] ) && $dataMap['title']->hasContent() )
$title = $dataMap['title']->content(); // a string for ezstring
$image = $dataMap['image']->content(); // an eZImageAliasHandler for ezimage
$alias = $image->attribute( 'medium' ); // url, width, height, alternative_text
$text = $dataMap['title']->toString(); // a plain string form for every datatypecontent() liefert, was der Datentyp speichert (eine Zeichenkette, eine Zahl, ein Objekt); toString() eine
Zeichenkette, die Sie speichern und später an fromString() übergeben können
(Lebenszyklus eines Datentyps).
Versionen und Sprachen
$version = $object->version( $object->attribute( 'current_version' ) );
$germanMap = $object->fetchDataMap( false, 'ger-DE' );
$languages = $object->availableLanguages();Die aktuelle Version ist die veröffentlichte; Entwürfe sind andere Versionen mit eigenem Status. Welche Sprache eine
Seite zeigt, folgt der SiteLanguageList des Siteaccess (Inhaltssprachen).
Rechte und Kontext
subTreeByNodeID()wendetcontent/readdes aktuellen Benutzers an, sofern Sie nicht'Limitation' => array()übergeben; übergeben Sie das niemals in Code, der Benutzern Ergebnisse zeigt.$node->canRead()und$object->canEdit()prüfen ein einzelnes Element (Richtlinienfunktionen und Einschränkungen).- In Kommandozeilenskripten ist der aktuelle Benutzer anonym, bis Sie einen anmelden; Skripte, die mehr brauchen,
müssen einen eigens dafür vorgesehenen Benutzer anmelden (
eZUser::setCurrentlyLoggedInUser()), nicht den Administrator. - Große Listen: Rufen Sie seitenweise ab und leeren Sie dazwischen die Caches im Speicher
(
eZContentObject::clearCache()), damit einem langen Skript nicht der Speicher ausgeht.
Verwandte Seiten
- Inhalte im Code anlegen
- Persistente Objekte und eigene Tabellen
- Active-Record-Muster
- 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.