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

Relationen und Einbettungen

Für CMS-Entwickler, wie Objekte aufeinander verweisen. Die Seite behandelt Relationsattribute, Einbettungen und Links in Rich Text, die vier Relationstypen, das Lesen von Relationen und umgekehrten Relationen in…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/cms-developers/relations-and-embeds.md

On this page

This page is a translation. Read the English original

Relationen und Einbettungen

Diese Seite richtet sich an Entwickler, die Inhalte modellieren, die auf andere Inhalte verweisen: eine Veranstaltung und ihre Referenten, ein Artikel und seine Bilder, ein Produkt und seine Downloads. Exponential erfasst jeden solchen Verweis als Relation zwischen Objekten, sodass Sie ihm in beide Richtungen folgen können und wissen, was bricht, bevor etwas entfernt wird.

Inhalt

  1. Drei Arten, auf Inhalte zu verweisen
  2. Relationsattribute
  3. Einbettungen und Links in Rich Text
  4. Die Relationstypen
  5. Relationen in Templates
  6. Umgekehrte Relationen
  7. Relationen in PHP
  8. Verknüpfte Inhalte entfernen

Drei Arten, auf Inhalte zu verweisen

ArtVerwenden Sie sie, wennBeispiel
Ein Relationsattribut (ezobjectrelationlist)der Verweis strukturierte Daten sind, die das Template platziertspeakers einer Veranstaltung, related_articles eines Artikels
Eine Einbettung in Rich Textein Redakteur ein Objekt an einer Stelle im Text platziertein Bild oder ein Video mitten in einem Artikel
Ein Link in Rich TextText auf eine andere Seite verweist"lesen Sie unseren [Datenschutzhinweis]"

Eine vierte Möglichkeit, eine zweite Platzierung, setzt dasselbe Objekt an zwei Stellen des Baums. Sie ist keine Relation: Verwenden Sie sie nur, wenn das Objekt wirklich an beide Stellen gehört (Objekte, Knoten und Platzierungen).

Relationsattribute

ezobjectrelationlist (Objekt Vernüpfungsliste) enthält eine geordnete Liste von Objekten. Im Klasseneditor legen Sie je Attribut fest (kernel/classes/datatypes/ezobjectrelationlist/ezobjectrelationlisttype.php):

EinstellungWirkung
AuswahlmethodeDurchsuchen (im Baum auswählen) oder eine Liste von Kandidaten im Bearbeitungsformular
Erlaubte Klassen (class_constraint_list)nur Objekte dieser Klassen können gewählt werden, zum Beispiel exp_speaker
Standardort (default_placement)wo das Durchsuchen beginnt und wohin Objekte kommen, die aus dem Bearbeitungsformular angelegt werden

Ein Bearbeitungsformular oder ein Durchsuchen nimmt für ein Attribut höchstens 1000 verknüpfte Objekte auf (MAX_RELATIONS). ezobjectrelation enthält ein einzelnes Objekt mit weniger Optionen; bevorzugen Sie den Listen-Datentyp auch für ein einziges Ziel (Datentypen wählen).

In ezxmltext ist eine Einbettung <embed object_id="..." view="embed"/> (oder node_id), und eine Inline-Einbettung ist <embed-inline>. Links auf Inhalte verwenden <link object_id="..."> oder node_id, und externe Links zeigen auf einen Eintrag der Linkliste. Jede Einbettung wird mit dem Ansichtsmodus embed der Klasse des eingebetteten Objekts gezeichnet, sodass das Artikel-Template nie wissen muss, was eingebettet wurde. Welche Ansichtsmodi und Klassen Redakteure für Einbettungen wählen können, legen content.ini [embed] und [embed-inline] fest (AvailableViewModes[], AvailableClasses[]). Templates: Embed-Ansicht und Embed-inline-Ansicht.

Die Relationstypen

Jede Relation ist eine Zeile in ezcontentobject_link mit einem Typ, Konstanten von eZContentObject:

KonstanteWertEntsteht durch
RELATION_COMMON1die Verknüpfungen eines Objekts, die Redakteure in seiner Liste verknüpfter Objekte hinzufügen
RELATION_EMBED2eine Einbettung in Rich Text
RELATION_LINK4einen Link auf Inhalte in Rich Text
RELATION_ATTRIBUTE8ein Relationsattribut (ezobjectrelation, ezobjectrelationlist)

Die Relationen werden je Version gespeichert, eine alte Version behält also die Relationen, die sie hatte.

Relationen in Templates

Der Inhalt des Relationsattributs ist ein Array mit dem Schlüssel relation_list; jedes Element hat contentobject_id und node_id. Die einfachste Ausgabe ist attribute_view_gui, das jedes Ziel mit seiner Embed-Ansicht zeichnet. Für eigenes Markup:

{def $speakers = $node.data_map.speakers}
{if $speakers.has_content}
<ul class="exp-speakers">
    {foreach $speakers.content.relation_list as $item}
        {def $speaker = fetch( 'content', 'object', hash( 'object_id', $item.contentobject_id ) )}
        {if and( $speaker, $speaker.can_read )}
            <li>{content_view_gui view='line' content_object=$speaker}</li>
        {/if}
        {undef $speaker}
    {/foreach}
</ul>
{/if}

Prüfen Sie can_read: Eine Relation gewährt keinen Zugriff auf ihr Ziel. Das mitgelieferte View-Template des Datentyps (design/standard/templates/content/datatype/view/ezobjectrelationlist.tpl) überspringt außerdem Ziele im Papierkorb und verborgene Ziele; der Datentyp ist unter ezobjectrelationlist beschrieben.

Der Fetch related_objects gibt die Ziele eines Objekts direkt zurück, auf Wunsch nach Attribut gefiltert:

{def $related = fetch( 'content', 'related_objects', hash(
        'object_id', $node.contentobject_id,
        'attribute_identifier', 'exp_event/speakers' ) )}

Umgekehrte Relationen

reverse_related_objects beantwortet die umgekehrte Frage: "Welche Objekte zeigen auf dieses?" Auf der Seite eines Referenten listet es die Veranstaltungen des Referenten, ohne ein Feld beim Referenten:

{def $events = fetch( 'content', 'reverse_related_objects', hash(
        'object_id', $node.contentobject_id,
        'all_relations', true() ) )}

Deshalb speichern Sie einen Verweis nur auf einer Seite: Die andere Seite ist einen Fetch entfernt. Für beide gibt es Zählvarianten (related_objects_count, reverse_related_objects_count).

Relationen in PHP

<?php
$object = eZContentObject::fetchByRemoteID( 'exp-event-2026-opening' );
$speakers = $object->relatedObjects( false, false, 0, false,
    array( 'AllRelations' => eZContentObject::RELATION_ATTRIBUTE ) );
$pointingHere = $object->reverseRelatedObjectList( false, 0, false,
    array( 'AllRelations' => true ) );

Lesen Sie die Signaturen in kernel/classes/ezcontentobject.php, bevor Sie sich auf einen Parameter verlassen; die Referenz des Buchs enthält die üblichen Aufrufe (eZContentObject). Um ein Relationsattribut aus einem Import zu setzen, übergeben Sie die Objekt-IDs der Ziele im fromString()-Format des Attributs (Inhalte aus PHP).

Verknüpfte Inhalte entfernen

Wer ein Objekt entfernt oder verbirgt, auf das andere zeigen, hinterlässt Lücken. Mit content.ini [RemoveSettings] ReverseRelationCheck=warn (und demselben Schlüssel in [HideSettings]), dem mitgelieferten Standard, listet die Administration die Objekte auf, die darauf verweisen, einschließlich Blöcken von Layouts, bevor sie etwas entfernt oder verbirgt (Prüfung umgekehrter Relationen). Templates sollten trotzdem damit rechnen, dass ein Ziel fehlt, verborgen oder nicht lesbar ist, wie es das Beispiel oben tut.

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