- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ausgabe eines Bild-Links aus Suchergebnis von FS-Integration
Hallo zusammen,
ich suche mit FS Integration in einer Tabelle nach bestimmten Datensรคtzen. Ein Attribut des Datensatzes ist ein Link auf ein Bild. Wenn ich das ausgebe <c:out value="${m.vorschaubild}" /> bekomme ich xml angezeigt.
<CMS_VALUE name="cs_vorschaubild" tag="CMS_INPUT_PICTURE"><LANG id="ยง" set="1"><REF>media:_4212601_kl</REF><ALT></ALT><REMOTE/><WIDTH>71</WIDTH><HEIGHT>70</HEIGHT><HSPACE/><VSPACE/><BORDER/></LANG></CMS_VALUE>
Wie komme ich an die richtige Url?
Grรผรe,
Claus Kolb
- Labels:
-
Developers
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo,
was ergibt die Ausgabe des Vorschaubildes, wenn Sie auf den Wert ohne <c:out value> zugreifen, also nur ${m.vorschaubild} . Wir benutzen sowas รคhnliches innerhalb von <fsi:iterateResults> und da benutzen wir kein <c:out>
Viele Grรผรe
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Die Url eines Mediums hรคngt von verschiedenen Faktoren ab:
- Deploymentziel (es kann mehrere geben)
- Art der Url-Erzeugung (kann im Generierungsauftrag eingestellt werden)
- Mehrsprachigkeit des Mediums
Die korrekte Url kann eigentlich nur zur Generierungszeit ermittelt werden. Die praktikabelste Lรถsung ist eine Contentprojektion (mit einer Tabellenvorlage) zu verwenden, die fรผr jeden Datensatz das Vorschaubild (img Tag) generiert. Dieses HTML-Schnipsel kรถnnen sie dann per JSP/JSTL in ihre eigentliche Seite inkludieren.
Das gleiche Problem haben Sie รผbrigens auch bei anderen Komplexen Eingabekomponenten (DOM etc.). Einige Kunden arbeiten auch mit einer einfachen Mapping-Datei (Datensatz-ID -> Url des Schnipsels).
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Nun ja.
Theoretisch gibt es auch bei einfachem Text eine Sprach-Umschaltung, etc.
Auรerdem erzeugt FS ja schlieรlich auch ansonsten die korrekten Link-Adressen, trotz der genannten Punkte.
Ein extrem hรคssliche Lรถsung wรคre in diesem Fall ja, sich die URL selbststรคndig zusammenzubauen, da es ja fรผr alle anderen Bilder auf der Seite auch klappt.
Mittels <c:out value="..."/> bekommt man zumindest das komplette xml als String zurรผck. Darin steht dann z.B. media:datei01 drin.
Man nimmt also den Link eines anderen Bildes (das im gleichen Ordner stehen muss) und ersetzt den Dateinamen mit dem in dem XML angegeben Wert. Die Dateiendung muss man raten oder separat hinterlegen.
Es geht also, ich verstehe nur nicht, warum das im Integration Modul nicht ordentlich umgesetzt wurde. Da lohnt es sich eher, ganz auf FS zu verzichten und die Bilder // PDFs etc. extern zu pflegen, wenn es nicht mรถglich ist, dass man auf die URL zugreifen kann.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Martin Herschke schrieb:
Nun ja.
Theoretisch gibt es auch bei einfachem Text eine Sprach-Umschaltung, etc.
In den Datenquellen gibt es fรผr jede Sprache eine entsprechende Spalte, insofern stellt dies kein Problem dar. Die Webseite kennt ja ihre Sprache und kann die entsprechende Spalte auslesen.
Martin Herschke schrieb:
Auรerdem erzeugt FS ja schlieรlich auch ansonsten die korrekten Link-Adressen, trotz der genannten Punkte.
Ja, aber wie ich bereits schrieb, sind diese Punkte erst zum Generierungszeitpunkt bekannt. Der direkte Zugriff auf die Datenbank (mittels Integration) umgeht die Generierung.
Martin Herschke schrieb:
Ein extrem hรคssliche Lรถsung wรคre in diesem Fall ja, sich die URL selbststรคndig zusammenzubauen, da es ja fรผr alle anderen Bilder auf der Seite auch klappt.Mittels <c:out value="..."/> bekommt man zumindest das komplette xml als String zurรผck. Darin steht dann z.B. media:datei01 drin.
Man nimmt also den Link eines anderen Bildes (das im gleichen Ordner stehen muss) und ersetzt den Dateinamen mit dem in dem XML angegeben Wert. Die Dateiendung muss man raten oder separat hinterlegen.
Das hat die bereits genannten Nachteile, die nachzubauenende Logik ist einfach zu komplex, zumindest wenn sie eine generische Lรถsung haben wollen. Selbst wenn Sie die Url richtig zusammengebaut haben, ist das Medium dann noch lange nicht unter dieser Url verfรผgbar. Das Medium muss vorher auch generiert und deployed worden sein.
Was spricht denn gegen den Ansatz den Image-Tag als Html-Schnipsel zu generieren und diesen mittels JSP-Include in die Seite einzufรผgen? Die Variante ist in wenigen Minuten erstellt (neue Tabellenvorlage anlegen, HTML-Kanal befรผllen, Seite anlegen, Datenreiter konfigurieren). Die generierten Seiten haben die FS_ID des Datensatzes als Postfix (z.B. productimage_1242.html). Die Seite wird in das gleiche Verzeichnis wie ihre eigentliche Seite gelegt, so dass der JSP-Include entsprechend simpel umzusetzen ist.
Eventuell macht es auch Sinn nicht nur den Image-Tag als Schnipsel zu rendern, sondern einen grรถรeren HTML-Block, der eventuell auch formatierten Text (DOM) enthรคlt.
Sie ersparen sich einfach viel Arbeit, wenn sie die Stรคrken eines vorgenerierenden Systems nutzen, anstatt mรถglichst viel "live" machen zu wollen. Mit einem schlauen und kurzen Deployment bringt "live" auch keinen Geschwindigkeitsvorteil mehr.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Christoph Feddersen schrieb:
Ja, aber wie ich bereits schrieb, sind diese Punkte erst zum Generierungszeitpunkt bekannt. Der direkte Zugriff auf die Datenbank (mittels Integration) umgeht die Generierung.
Es geht darum, dass das INTEGRATION Suchfeld, womit man die Suche startet, auf einer deployten Seite zur Verfรผgung gestellt wird. Dadurch ist der Kontext des Suchfeldes klar... sprich:
Wenn ich eine Suchseite unter "www.example.de/de/search.html" verwende und ich dann eine Suche nach einem Bild aussuche, dann steht fest, dass die Basis-URL "www.example.de" heiรt.
Da die Medienverwaltung in FirstSpirit der Ordnerstruktur im deploytem Zustand entspricht, weiร man auch, dass ein Bild, dass in "Medienverwaltung -> img -> icons" liegt, spรคter auch in dem entsprechenden Unterordner landet.
Christoph Feddersen schrieb:
Selbst wenn Sie die Url richtig zusammengebaut haben, ist das Medium dann noch lange nicht unter dieser Url verfรผgbar. Das Medium muss vorher auch generiert und deployed worden sein.
Das stimmt schon, doch das sind generelle Probleme, die man ansonsten auch in FirstSpirit hat (nicht deployte Seiten werden wohl kaum angezeigt). Gleiches gilt bei externen Datenbanken. Ist der Server nicht verfรผgbar, etc., kann das Bild nicht angezeigt werden.
Christoph Feddersen schrieb:
Was spricht denn gegen den Ansatz den Image-Tag als Html-Schnipsel zu generieren und diesen mittels JSP-Include in die Seite einzufรผgen? Die Variante ist in wenigen Minuten erstellt (neue Tabellenvorlage anlegen, HTML-Kanal befรผllen, Seite anlegen, Datenreiter konfigurieren).
Die grundlegende Philosophie ist in meinen Augen bereits verkehrt.
Im Klartext bedeutet dieser Ansatz:
- Man schreibt die KOMPLETTE Datenbank in eine Datei (oder wenn man mรถchte fรผr 500 Bilder auch in 500 Dateien).
- Man ruft ein Servlet auf, dass die Datenbank durchsucht und eine ID erzeugt
- Aus der ID + einer Grund-URL Adresse baut man sich die komplette Adresse zusammen
- Mittels JSP wird dann nach einer Quelle mit der zusammengesetzten URL gesucht, die dann eingebunden wird.
Zusammenfassend kรถnnte man sagen, dass man die Datenbank auch hรคtte rausschmeiรen kรถnnen => sie wird ja in diesen Ansatz wรคhrend des Generierungsvorganges nach ALLEN Eintrรคgen durchsucht, die dann in eine Datei geschrieben werden... vermutlich in eine HTML Datei.
Dies widerspricht meiner Meinung nach doch stark dem Ansatz einer Datenbank. Verglichen mit externen Alternativen, die einfach eine URL speichern, hat man wesentlich weniger Redundanz (ein DB Eintrag eines komplexen Datenfeldes liegt dann nicht als Datei UND als jsp Schnipsel vor).
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Fรผr einen konkreten Anwendungsfall kann man die Url zu einem Medium im Livesystem ermitteln. Dort kรถnnen definieren, dass Urls immer nur รผber den Default-UrlCreator erzeugt werden, es keine sprachabhรคngigen Medien geben darf und keine Remote-Medien eingesetzt werden. Sie mรผssen also nur noch sicherstellen, dass die Medien auch irgendwie deployed werden.
Einen generische Lรถsung ist aber deutlich aufwendiger, aus den bereits genannten Grรผnden. Deswegen gibt es solch eine Funktionalitรคt momentan auch nicht.
Martin Herschke schrieb:
Im Klartext bedeutet dieser Ansatz:
- Man schreibt die KOMPLETTE Datenbank in eine Datei (oder wenn man mรถchte fรผr 500 Bilder auch in 500 Dateien).
- Man ruft ein Servlet auf, dass die Datenbank durchsucht und eine ID erzeugt
- Aus der ID + einer Grund-URL Adresse baut man sich die komplette Adresse zusammen
- Mittels JSP wird dann nach einer Quelle mit der zusammengesetzten URL gesucht, die dann eingebunden wird.
Man schreibt nicht die kompletten Daten der Tabelle/Datenbank in Dateien, sondern nur die Html-Schnipsel, die man fรผr die Darstellung braucht. Das kann ein groรes Schnipsel sein, also ein komplettes Suchergebnis inklusive Bild, รberschrift, Link und Beschreibungstext. Alternativ schreibt man mehrere kleine Schnipsel heraus (nur das Bild, nur den formatierten Text). Dies geschieht รผber eine Contentprojektion, bei denen die FS-ID immer im Dateinamen vorkommt. Man braucht also nicht mehrmals suchen, sondern benutzt FS-Integration um ganz normal in der Datenbank zu suchen. Bei der Ausgabe sind dann keine weiteren Suchen mehr notwendig, da man die Url des korrekten Schnipsel einfach zusammenbauen kann (/de/schnipsel/suchergebnis_FS-ID.html).
Martin Herschke schrieb:
Zusammenfassend kรถnnte man sagen, dass man die Datenbank auch hรคtte rausschmeiรen kรถnnen => sie wird ja in diesen Ansatz wรคhrend des Generierungsvorganges nach ALLEN Eintrรคgen durchsucht, die dann in eine Datei geschrieben werden... vermutlich in eine HTML Datei.
Wie gesagt, FirstSpirit ist ein vorgenerierendes System. Insofern liegen alle Daten redundant vor, nรคmlich im Redaktionssystem (FirstSpirit) und in der Liveseite(n). Ggf. gibt es auch mehrere Ausgabekanรคle wie Html und PDF. Wichtig ist doch nur, dass die Daten nur einmal im Redaktionssystem vorliegen und somit an einer Stelle geรคndert werden kรถnnen.
Dynamische Systeme, die oft eine Datenbank zur Speicherung nutzen, arbeiten hier anders. Dort wird dann bei jedem Zugriff auf die Liveseite die Information aus der Datenbank geholt. Um Performance und Skalierbarkeit zu gewรคhrleisten, werden verschiedene Caching-Layer verwenden, so dass die Daten auch dort redundant vorliegen.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Es wรคre super wenn Sie bitte eine ausfรผhrlichere Beschreibung mit den einzelnen Schritten und Beispielen schreiben kรถnnten.
Ich denke fรผr die "newb-s" wรคre die obengenannte Erklรคrung leider nicht sehr verstรคndlich.
Ich habe mich auch mit der Frage beschรคftigt wie man mittels FSI eine Datei hochladen kann. Bisher habe ich zu diesem Thema noch keine Antwort gefunden. Wurde das von FSI unterstรผtzt? Falls nicht, kรถnnten Sie bitte eventuell eine Lรถsung ala "best practice" fรผr dieses Problems nennen?
Ich bedanke mich im Voraus.
Mfg
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Gibt es hierzu mittlerweile ein Beispiel? Ich stehe ebenfalls vor dem Problem, dass ich diverse DOM-Felder ausgeben muss. Leider stehe ich bei der Beschreibung auf dem Schlauch.

