Show Menu
THEMEN×

Anpassen und Erweitern von Inhaltsfragmenten

In Adobe Experience Manager als Cloud-Dienst erweitert ein Inhaltsfragment ein Standard-Asset. siehe:

Architektur

Ein Inhaltsfragment umfasst die folgenden grundlegenden Bestandteile :
  • A Content Fragment ,
  • consisting of one or more Content Elements ,
  • and which can have one or more Content Variations .
Je nach Fragment-Typ werden auch Modelle oder die Vorlage "Einfaches Fragment "verwendet:
Es werden derzeit Inhaltsfragmentmodelle zum Erstellen aller Fragmente empfohlen.
Inhaltsfragmentmodelle werden für alle Beispiele in WKND verwendet.
  • Inhaltsfragmentmodelle:
    • werden zum Definieren von Inhaltsfragmenten verwendet, die strukturierte Inhalte enthalten.
    • Inhaltsfragmentmodelle definieren die Struktur eines Inhaltsfragments, wenn dieses erstellt wird.
    • Ein Fragment verweist auf das Modell. Änderungen am Modell können sich daher auf alle abhängigen Fragmente auswirken.
    • Modelle werden anhand von Datentypen erstellt.
    • Funktionen zum Hinzufügen neuer Varianten und dergleichen müssen das Fragment entsprechend aktualisieren.
    Damit Sie ein Inhaltsfragment anzeigen/rendern können, muss Ihr Konto über read Berechtigungen für das Modell verfügen.
    Alle Änderungen an einem vorhandenen Inhaltsfragmentmodell können sich auf abhängige Fragmente auswirken. Daher kann es zu verwaisten Eigenschaften in diesen Fragmenten kommen.
  • Inhaltsfragmentvorlage - Einfaches Fragment :
    • werden zum Definieren von einfachen Inhaltsfragmenten verwendet.
    • Diese Vorlage definiert die (einfache, schreibgeschützte) Struktur eines Inhaltsfragments, wenn dieses erstellt wird.
    • Die Vorlage wird beim Erstellen in das Fragment kopiert.
    • Funktionen zum Hinzufügen neuer Varianten und dergleichen müssen das Fragment entsprechend aktualisieren.
    • The Content fragment template ( Simple Fragment ) operates in a different manner to that of other templating mechanisms within the AEM ecosystem (e.g. page templates, etc.). Daher sollte sie gesondert betrachtet werden.
    • When based on the Simple Fragment template the MIME type of the content is managed on the actual content; this means that each element and variation can have a different MIME type.

Integration von Sites mit Assets

Die Inhaltsfragmentverwaltung (Content Fragment Management, CFM) ist Teil von AEM Assets:
  • Inhaltsfragmente sind Assets.
  • Sie verwenden vorhandene Assets-Funktionen.
  • Sie sind vollständig mit Assets integriert (Admin-Konsole usw.).
Inhaltsfragmente werden als Sites-Funktion wie folgt betrachtet:
  • Sie werden beim Authoring Ihrer Seiten verwendet.

Zuordnen von strukturierten Inhaltsfragmenten zu Assets

Inhaltsfragmente mit strukturierten Inhalten (d. h. basierend auf einem Inhaltsfragmentmodell) werden einem einzelnen Asset zugeordnet:
  • All content is stored under the jcr:content/data node of the asset:
    • Die Elementdaten werden unter dem Master-Unterknoten gespeichert:
      jcr:content/data/master
    • Variations are stored under a sub-node that carries the name of the variation: e.g. jcr:content/data/myvariation
    • The data of each element is stored in the respective sub-node as a property with the element name: e.g. the content of element text is stored as property text on jcr:content/data/master
  • Metadata and associated content is stored below jcr:content/metadata Except for the title and description, which are not considered traditional metadata and stored on jcr:content

Zuordnen von einfachen Inhaltsfragmenten zu Assets

Simple content fragments (based on the Simple Fragment template) are mapped to a composite consisting of a main asset and (optional) sub-assets:
  • Alle nicht inhaltsbezogenen Daten in einem Fragment (wie Titel, Beschreibung, Metadaten, Struktur) werden nur im Haupt-Asset verwaltet.
  • Der Inhalt des ersten Elements eines Fragments wird dem ursprünglichen Ausgabeformat des Haupt-Assets zugeordnet.
    • Die Varianten (falls vorhanden) des ersten Elements werden anderen Ausgabeformaten des Haupt-Assets zugeordnet.
  • Zusätzliche Elemente (falls vorhanden) werden Unter-Assets des Haupt-Assets zugeordnet.
    • Der Hauptinhalt dieser zusätzlichen Elemente wird der ursprünglichen Darstellung des jeweiligen Unterassets zugeordnet.
    • Andere Varianten (falls zutreffend) zusätzlicher Elemente werden anderen Ausgabeformaten der jeweiligen Unter-Assets zugeordnet.

Asset-Speicherort

Wie bei Standard-Assets wird das Inhaltsfragment gespeichert in:
/content/dam

Asset-Berechtigungen

Weitere Informationen finden Sie unter Inhaltsfragment - Überlegungen löschen.

Funktionsintegration

Integration mit Assets core:
  • Die Funktion "Inhaltsfragment-Management (CFM)"baut auf dem Asset-Kern auf.
  • CFM stellt eigene Implementierungen für Elemente in den Ansichten "card/column/Liste"bereit. diese Plug-ins in die vorhandenen Asset Content Rendering-Implementierungen.
  • Mehrere Assets-Komponenten wurden erweitert, um Inhaltsfragmente zu berücksichtigen.

Verwenden von Inhaltsfragmenten in Seiten

Die Komponente Inhaltsfragment ist Teil der Kernkomponenten . Weitere Informationen finden Sie unter Entwickeln von Kernkomponenten .
AEM-Seiten können auf Inhaltsfragmente verweisen, ähnlich wie bei allen anderen Asset-Typen. AEM stellt die Kernkomponente für Inhaltsfragmente ​bereit, eine Komponente, mit der Sie Inhaltsfragmente in Seiten einfügen können . You can also extend this​ Content Fragment core component.
  • Die Komponente verwendet die fragmentPath -Eigenschaft für Verweise auf das tatsächliche Inhaltsfragment. The fragmentPath property is handled in the same manner as similar properties of other asset types; for example, when the content fragment is moved to another location.
  • Mit der Komponente können Sie die Variante auswählen, die angezeigt werden soll.
  • Außerdem kann eine Reihe von Absätzen ausgewählt werden, um die Ausgabe zu beschränken, z. B. für die Ausgabe in mehreren Spalten.
  • Die Komponente lässt auch Zwischeninhalte zu:
    • Die Komponente ermöglicht es Ihnen, andere Assets (Bilder usw.) zwischen den Absätzen des Fragments zu platzieren, auf das verwiesen wird.
    • Bei Zwischeninhalten müssen Sie:
      • Kenntnis der Möglichkeit instabiler Verweise; Zwischen-Inhalt (der beim Authoring einer Seite hinzugefügt wird) hat keine feste Beziehung zu dem Absatz, neben dem er positioniert wird, und fügt einen neuen Absatz (im Inhaltsfragmenteditor) ein, bevor die Position des dazwischen liegenden Inhalts die relative Position verlieren kann
      • Berücksichtigen Sie die zusätzlichen Parameter (z. B. Variation und Absatz-Filter), um zu konfigurieren, was auf der Seite wiedergegeben wird.
Inhaltsfragmentmodell:
Bei Verwendung eines auf einem Inhaltsfragmentmodell basierenden Inhaltsfragments auf einer Seite wird auf das Modell verwiesen. Falls das Modell also zum Zeitpunkt der Seitenveröffentlichung nicht veröffentlicht wurde, wird dies gekennzeichnet und das Modell zu den Ressourcen hinzugefügt, die mit der Seite veröffentlicht werden sollen.
Inhaltsfragment-Vorlage - Einfaches Fragment:
When using a content fragment that has been based on the content fragment template Simple Fragment on a page, there is no reference as the template was copied when creating the fragment.

Integration mit anderen Frameworks

Inhaltsfragmente können mit folgenden Frameworks integriert werden:
  • Übersetzungen
    Inhaltsfragmente sind vollständig in den AEM-Übersetzungs-Workflow integriert. Auf Architekturebene bedeutet dies:
    • Die einzelnen Übersetzungen eines Inhaltsfragments sind separate Fragmente, z. B.:
      • sie befinden sich unter verschiedenen sprachlichen Wurzeln; aber verwenden Sie genau denselben relativen Pfad unterhalb des entsprechenden Sprachstamms:
        /content/dam/<path>/en/<to>/<fragment>
        vs.
        /content/dam/<path>/de/<to>/<fragment>
    • Außer den regelbasierten Pfaden besteht keinerlei Verbindung zwischen den unterschiedlichen Sprachversionen von Inhaltsfragmenten. Sie werden als zwei separate Fragmente behandelt, obwohl die Benutzeroberfläche Funktionen zum Navigieren zwischen den Sprachvarianten beinhaltet.
    Der AEM-Übersetzungs-Workflow arbeitet mit /content :
    • As the content fragment models reside in /conf , these are not included in such translations. Sie können die Strings der Benutzeroberfläche internationalisieren.
  • Metadatenschemata
    • Inhaltsfragmente verwenden Metadatenschemata (wieder), die mit Standard-Assets definiert werden können.
    • CFM bietet ein eigenes, spezifisches Schema:
      /libs/dam/content/schemaeditors/forms/contentfragment
      kann bei Bedarf erweitert werden.
    • Das entsprechende Schemaformular ist mit dem Fragment-Editor integriert.

Serverseitige API für die Inhaltsfragmentverwaltung

Sie können die serverseitige API für den Zugriff auf Inhaltsfragmente verwenden, siehe:
Es wird dringend empfohlen, die serverseitige API zu verwenden, anstatt direkt auf die Inhaltsstruktur zuzugreifen.

Hauptschnittstellen

Die folgenden drei Schnittstellen können als Einstiegspunkte dienen:
  • Inhaltsfragment ( ContentFragment )
    In dieser Schnittstelle können Sie abstrakt mit einem Inhaltsfragment arbeiten.
    Die Schnittstelle bietet folgende Möglichkeiten:
    • Verwalten grundlegender Daten (z. B. Abrufen von Namen, Abrufen/Festlegen von Titel, Beschreibung)
    • Zugriff auf Metadaten
    • Zugriff auf Elemente:
      • Auflisten von Elementen
      • Abrufen von Elementen nach Name
      • Create new elements (see Caveats )
      • Access element data (see ContentElement )
    • Auflisten der für das Fragment definierten Varianten
    • Globales Erstellen neuer Varianten
    • Verwalten zugeordneter Inhalte:
      • Auflisten von Sammlungen
      • Hinzufügen von Sammlungen
      • Entfernen von Sammlungen
    • Zugriff auf das Modell oder die Vorlage des Fragments
    Folgende Schnittstellen stehen für die Hauptelemente eines Fragments:
    • Inhaltselement ( ContentElement )
      • Abrufen grundlegender Daten (Name, Titel, Beschreibung)
      • Abrufen/Festlegen von Inhalten
      • Zugriff auf Varianten eines Elements:
        • Auflisten von Varianten
        • Abrufen von Varianten nach Name
        • Erstellen neuer Varianten (siehe Einschränkungen )
        • Remove variations (see Caveats )
        • Access variation data (see ContentVariation )
      • Tastaturbefehl zum Auflösen von Varianten (Anwenden zusätzlicher implementierungsspezifischer Ausweich-Logik, falls die angegebene Variante für ein Element nicht verfügbar ist)
    • Inhaltsvariante ( ContentVariation )
      • Abrufen grundlegender Daten (Name, Titel, Beschreibung)
      • Abrufen/Festlegen von Inhalten
      • Einfache Synchronisierung basierend auf den zuletzt geänderten Informationen
    All three interfaces ( ContentFragment , ContentElement , ContentVariation ) extend the Versionable interface, which adds versioning capabilities, required for content fragments:
    • Erstellen neuer Versionen des Elements
    • Auflisten der Versionen des Elements
    • Abrufen des Inhalts einer spezifischen Version des versionierten Elements

Anpassen mit adaptTo ()

Folgendes kann angepasst werden:
  • ContentFragment können angepasst werden an:
    • Resource - die zugrunde liegende Sling - Ressource; Um das zugrunde liegende Objekt Resource direkt zu aktualisieren, muss das ContentFragment Objekt neu erstellt werden.
    • Asset - die DAM- Asset Abstraktion, die das Inhaltsfragment darstellt; Das Asset direkte Aktualisieren des Objekts erfordert eine erneute Erstellung des ContentFragment Objekts.
  • ContentElement können angepasst werden an:
    • ElementTemplate – für den Zugriff auf die Strukturdaten des Elements.
  • Resource können angepasst werden an:
    • ContentFragment

Einschränkungen

Bitte beachten Sie Folgendes:
  • Die gesamte API ist so konzipiert, dass Änderungen nicht automatisch persistent gespeichert werden (es sei denn, dies ist anders in der Java-Dokumentation der API angegeben). Daher müssen Sie immer den Ressourcenkonfliktlöser der entsprechenden Anfrage (oder den tatsächlich verwendeten Konfliktlöser) festlegen.
  • Aufgaben, für die möglicherweise zusätzliche Arbeitsschritte erforderlich sind:
    • Erstellen Sie neue Varianten von ContentFragment zur Aktualisierung der Datenstruktur.
    • Wenn Sie vorhandene Varianten durch ein Element entfernen, ContentElement.removeVariation() werden die globalen Datenstrukturen, die der Änderung zugewiesen sind, nicht aktualisiert. Um sicherzustellen, dass diese Datenstrukturen synchron bleiben, verwenden Sie ContentFragment.removeVariation() stattdessen die Option, mit der eine Variation global entfernt wird.

Clientseitige API für die Inhaltsfragmentverwaltung

Die clientseitige API ist intern.

Zusätzliche Informationen

Beachten Sie Folgendes
  • filter.xml
    The filter.xml for content fragment management is configured so that it does not overlap with the Assets core content package.

Bearbeitungssitzungen

Bitte beachten Sie diese Hintergrundinformationen. Sie sollten hier nichts ändern (da es im Repository als privater Bereich gekennzeichnet ist), aber es kann in einigen Fällen hilfreich sein, zu verstehen, wie die Dinge unter der Haube funktionieren.
Die Bearbeitung eines Inhaltsfragments, das mehrere Ansichten umfassen kann (= HTML-Seiten), ist atomisch. Da die atomaren Bearbeitungsfunktionen für mehrere Ansichten kein typisches AEM-Konzept sind, verwenden Inhaltsfragmente eine so genannte Bearbeitungssitzung .
Eine Bearbeitungssitzung wird gestartet, wenn der Benutzer ein Inhaltsfragment im Editor öffnet. Die Bearbeitungssitzung ist beendet, wenn der Benutzer den Editor durch Auswählen von Speichern oder Abbrechen verlässt.
Technisch gesehen werden alle Änderungen an Live -Inhalten wie bei allen anderen AEM-Bearbeitungen vorgenommen. Beim Starten der Bearbeitungssitzung wird eine Version des aktuellen, nicht bearbeiteten Status erstellt. Wenn ein Benutzer eine Bearbeitung abbricht, wird diese Version wiederhergestellt. Wenn der Benutzer auf Speichern klickt, wird nichts Bestimmtes ausgeführt, da die Bearbeitung für Live -Inhalte ausgeführt wurde. Daher bleiben alle Änderungen bereits erhalten. Durch Klicken auf Speichern wird auch eine Hintergrundverarbeitung ausgelöst (z. B. das Erstellen von Volltextsuchinformationen und/oder das Bearbeiten von gemischten Medienelementen).
Es gibt einige Sicherheitsmaßnahmen für Fallschutzsysteme an den Kanten. Wenn der Benutzer beispielsweise versucht, den Editor zu verlassen, ohne die Bearbeitungssitzung zu speichern oder abzubrechen. Außerdem ist eine regelmäßige automatische Speicherung verfügbar, um Datenverluste zu vermeiden. Beachten Sie, dass zwei Benutzer dasselbe Inhaltsfragment gleichzeitig bearbeiten können und daher alle anderen Änderungen überschreiben können. Um dies zu verhindern, muss das Inhaltsfragment gesperrt werden, indem die Aktion Kassengang der DAM-Verwaltung auf das Fragment angewendet wird.

Beispiele

Beispiel: Zugreifen auf ein vorhandenes Inhaltsfragment

Dazu können Sie die Ressource, die für die API steht, wie folgt anpassen:
com.adobe.cq.dam.cfm.ContentFragment
Beispiel:
// first, get the resource
Resource fragmentResource = resourceResolver.getResource("/content/dam/fragments/my-fragment");
// then adapt it
if (fragmentResource != null) {
    ContentFragment fragment = fragmentResource.adaptTo(ContentFragment.class);
    // the resource is now accessible through the API
}

Beispiel: Erstellen eines neuen Inhaltsfragments

Um ein neues Inhaltsfragment programmgesteuert zu erstellen, müssen Sie ein FragmentTemplate adaptives Modell oder eine Vorlagenressource verwenden.
Beispiel:
Resource templateOrModelRsc = resourceResolver.getResource("...");
FragmentTemplate tpl = templateOrModelRsc.adaptTo(FragmentTemplate.class);
ContentFragment newFragment = tpl.createFragment(parentRsc, "A fragment name", "A fragment description.");

Beispiel: Angeben des Intervalls für das automatische Speichern

The auto save interval (measured in seconds) can be defined using the configuration manager (ConfMgr):
  • Node: <conf-root>/settings/dam/cfm/jcr:content
  • Eigenschaftsname: autoSaveInterval
  • Typ: Long
  • Default: 600 (10 minutes); this is defined on /libs/settings/dam/cfm/jcr:content
Wenn Sie ein Intervall von 5 Minuten für das automatische Speichern festlegen möchten, müssen Sie die Eigenschaft auf dem Knoten definieren. Beispiel:
  • Node: /conf/global/settings/dam/cfm/jcr:content
  • Eigenschaftsname: autoSaveInterval
  • Typ: Long
  • Wert: 300 (5 Minuten entsprechen 300 Sekunden)

Komponenten für die Seitenbearbeitung

Weitere Informationen finden Sie unter