ACordes
I'm new here

FS-Integration / XML-Felder / Tabellenvorlagen

Hallo,

ich weiß, zu diesem Thema gibt es hier bereits ein paar Threads.… Nur leider geht mir kein Licht auf, wie genau ich es auf saubere Art und Weise erreiche, dass mit dem Integration-Modul DOM-Werte korrekt ausgegeben werden.

Ich habe bspw. eine Datenquelle, die Pressemeldungen enthält. Auf einer Archiv-Übersichtsseite sollen die vom Benutzer ausgewählten Jahr / Monat entsprechenden Meldungen angeteasert werden (inklusive DOM-Feld und Bild). Hierzu habe ich eine Absatzvorlage in die Seite eingebunden, die mittels JSTL die Ausgabe erzeugt.

Per Link gelangt man zur Detailansicht (Tabellenvorlage) der Meldung. Dies kann ich ja noch problemlos mit solch einem Schnipsel erreichen:

<a href="$CMS_REF(pageref:"press_release_detail")$/contentId=<c:out value="${article.fs_id}">Artikel lesen</a>

Leider hilft mir das ja wenig für die direkte Ausgabe von XML-Feldern in meiner Schleife. Ich habe hierzu gelesen, dass ich eine weitere (?) Tabellenvorlage anlegen kann, die mir nur den (bzw. die) für den Teaser gewünschten Wert(e) ausgibt.

Aber wie inkludiere ich diese in meine Absatzvorlage? Ich müsste dann ja auch eine Extra-Seite samt Menüpunkt anlegen, die mir nur den Teaser generiert, was mir aber eher unsauber erscheint.

Könnte mir da mal jemand auf die Sprünge helfen…?

Vielen Dank im Voraus!

0 Kudos
5 Replies
ACordes
I'm new here

Offenbar führt ja kein Weg daran vorbei, für jede Ausgabe eine Extra-Seite zu erzeugen und in die Ausgabe mittels JSP-Include einzubinden.

Ich habe eine Extra-Tabellenvorlage ("Teaser Pressemeldung") angelegt, eine Extra-Seitenvorlage angelegt, die mir Plain den gewünschten Output generiert, in der Struktur verlinkt und in meine Absatzvorlage mittels <c:import url="$CMS_REF…"> eingebunden.

Ein Problem habe ich jetzt aber noch: kann ich irgendwie die FirstSpirit-Anmeldung für die Preview umgehen? Da ja keine Session besteht, wird mir in die Ausgabe nur das Login-Formular generiert. Kann ich die Abfrage evtl. ganz deaktivieren?

0 Kudos
rrichter
Occasional Collector

Hallo,

wenn man im <c:import>-Tag das Attribut "context" auf das Preview-Verzeichnis des Projekts setzt, dann sollte die Session auch nicht verlorengehen.

Dann noch ein paar weitere Tipps/Anmerkungen:

Oben wundert mich die Angabe

<a href="$CMS_REF(pageref:"press_release_detail")$/contentId=<c:out value="${article.fs_id}">Artikel lesen</a>

Das kann doch (wenn überhaupt) nur in der Preview funktionieren, aber nicht im generierten Stand, oder sehe ich das falsch. Wenn hier eine Liste über Integration erzeugt wird, müsste man den Pfad zuvor bei der Generierung anders erzeugen und dann die ID dynamisch daran hängen, z.B. <dateiname_detailseite_ohne_extension>_<c:out value="${article.fs_id}"/>.jsp.

Um Generierungszeit für Extra-Teaser-Detailseiten zu sparen könnte man die Detailseite nutzen, die sowieso generiert wird, und dort (wenn es eine JSP-Seite ist) über einen Request-Parameter steuern, ob die komplette Seite oder nur ein Teaserschnipsel ausgegeben wird.

Ungefähr so:

detail_1742.jsp?show=complete

gibt die Detailseite komplett aus

detail_1742.jsp?show=teaser

gibt nur das Teaserschnipsel aus.

Viele Grüße,

Raphael Richter.

1+1=3 for large values of 1.
0 Kudos

Hallo Herr Richter,

stimmt, ich müsste natürlich noch abfragen, ob ich in der preview oder live unterwegs bin und die Ausgabe des Links entsprechend anpassen.

Hätten Sie evtl. ein Beispiel, was genau dann im "context"-Attribut stehen muss?

Mit einer relativen URL würde die Session doch auch bestehen bleiben, oder? Die Angabe einer relativen URL (z. B.: "fs4preview_9474/preview/9474/site/DE/current/9477/34348/contentId=2485") gibt mir nämlich leider immer eine ResponseErrorException (404) zurück. Wobei ich auch hier nicht genau weiß, was das "url"-Attribut erwartet… Ich bin leider relativ JSP/JSTL-unerfahren.

0 Kudos
rrichter
Occasional Collector

Hallo Herr Cordes,

versuchen Sie es einmal (ohne Gewähr) hiermit:

$CMS_IF(#global.preview)$

    $CMS_SET(set_url,ref(ss_news_detail,contentId:1742,abs:1).url)$

    $CMS_SET(set_index, set_url.indexOf('/',1))$

    $CMS_SET(set_context)$$CMS_VALUE(set_url.substring(0,set_index))$$CMS_END_SET$

    $CMS_SET(set_newUrl)$$CMS_VALUE(set_url.substring(set_index))$$CMS_END_SET$

    <fs-c:import charEncoding="$CMS_VALUE(#global.encoding)$" context="$CMS_VALUE(set_context)$" url="$CMS_VALUE(set_newUrl)$" />

$CMS_END_IF$

wobei "ss_news_detail" die Detailseitenreferenz ist.

Das sollte funktionieren.

Viele Grüße,

Raphael Richter.

1+1=3 for large values of 1.

Vielen Dank für das Schnipsel! Ich habe es ein wenig abgeändert und nun funktioniert die Ausgabe wie gewünscht.

0 Kudos