Zugriff auf FS_INDEX-Daten
Inhaltsverzeichnis |
Je nach Implementierung kann ein DataAccessPlugin - die Quelle der Daten, die in FS_INDEX referenziert werden - Authentifizierung erfordern, um Daten aus einem Web Service anzufragen und sie darzustellen (siehe Aspekt DataAccessControlling auf der Seite Datenzugriff-Plugin (Plugin-Entwicklung). In diesem Fall ist der erfolgreiche Zugriff auf Details der Daten einer FS_INDEX-Komponente von der jeweiligen Implementierung des DataAccessPlugin abhängig. |
Zugriff über FormData-Objekte
Beim Zugriff auf eine FS_INDEX-Eingabekomponente über ein FormData-Objekt wird ein Objekt vom Typ Index zurückgeliefert, welches für jeden Eintrag des Index ein Record-Objekt enthält. Das Index-Objekt ermöglicht die Verwaltung der Indexeinträge sowie das Erstellen neuer Einträge (siehe Datentyp Index).
Beispiel Ausgabe FS_INDEX:
(in diesem Fall DatasetDataAccessPlugin)
...
$CMS_FOR(entry,st_index.values)$
$CMS_VALUE(entry.formData.tt_headline)$
$CMS_END_FOR$
...
Ein Record-Objekt enthält lediglich den vom Datenzugriff-Plugin gelieferten String-Bezeichner des referenzierten Datenobjekts. Um auf die tatsächlichen Daten eines Eintrags zuzugreifen, muss ein String-Bezeichner vom mit der Indexkomponente assoziierten Datenzugriff-Plugin zu einem Datenobjekt aufgelöst werden (siehe Datentyp Record).
Die Ausgabe einer FS_INDEX-Eingabekomponente mithilfe von $CMS_VALUE(...)$ wird nicht mehr unterstützt und führt zu Generierungswarnungen („use of deprecated value generation method for an index editor“). Die Ausgabe sollte immer über $CMS_FOR(...)$ erfolgen (siehe Beispiel Ausgabe FS_INDEX). |
Zugriff über die API (Beispiel):
FormData fd = ...;
Index index = fd.get(language, "pt_index").get();
DataAccessSession dataAccessSession = index.createSession(context);
...
for (Index.Record record : index) {
String myIdentifier = record.getIdentifier();
Dataset ds = (Dataset) dataAccessSession.getData(myIdentifier);
...
}
Zugriff in Vorlagensatz- und Schnipseldefinitionen
In Vorlagensatz- und Schnipseldefinitionen von Vorlagen wird beim Zugriff auf eine FS_INDEX-Eingabekomponente hingegen ein Objekt vom Typ IndexAccessor zurückgeliefert, das lesenden Zugriff auf die in der Komponente gespeicherten String-Bezeichner der Einträge und auf die den Einträgen entsprechenden, über das mit der Indexkomponente assoziierte Datenzugriff-Plugin aufgelösten Datenobjekte ermöglicht (siehe Datentyp IndexAccessor).
Einschränkung: Wenn man innerhalb eines Vorlagensatzes über ein FormData-Objekt auf eine FS_INDEX-Eingabekomponente zugreift, wird ein Objekt vom Typ Index (nicht IndexAccessor) zurückgeliefert. Auch in diesem Fall besteht kein direkter Zugriff auf die Daten der FS_INDEX-Eingabekomponente (siehe Beschreibung und Beispiel oben Zugriff über FormData-Objekte). |
Ab werden in diesem Bereich zusätzliche Schnittstellen angeboten, die eine Darstellung dieser externen Datenobjekte in Form eines Schnipsels ermöglichen. Dazu wurde die Methode getSnippets (in Bean-Syntax: .snippets) eingeführt:
FS_INDEX_VAR.snippets
Die Methode liefert eine Liste zurück. Das gewünschte Element der Liste kann durch Angabe der Positionsnummer (in eckigen Klammern, die Zählung beginnt bei 0) zurückgeliefert werden.
Um die Werte der Schnipsel der verschiedenen Einträge einer FS_INDEX-Komponente zu gelangen, kann folgende Syntax verwendet werden:
FS_INDEX_VAR.snippets[0].thumbnail
FS_INDEX_VAR.snippets[0].header
FS_INDEX_VAR.snippets[0].extract
Dabei liefert
- thumbnail den Wert des Felds Miniaturansicht
- header den Wert des Felds Kennsatz
- extract den Wert des Feld Ausriss
der Schnipseldefinition des in diesem Fall ersten Eintrags des assoziierten Datenzugriff-Plugins.
Siehe dazu auch Interface DataSnippet (Package de.espirit.firstspirit.agency).
Die Grafik zeigt den Aufruf in einer Seitenvorlage im Register „Schnipsel“ für:
- [1] ein Bild (Feld „Miniaturansicht“)
- [2] einen Titel (Feld „Kennsatz“)
- [3] einen Textausschnitt (Feld „Ausriss“)
Die Vorschau [4] zeigt anschließend die Daten aus der externen Quelle im Schnipsel an. Diese Inhalte werden anschließend, wie herkömmliche FirstSpirit-Objekte, in Suchdialogen [5] und Reports im SiteArchitect und im ContentCreator dargestellt.