Hallo,
wahrscheinlich ist es garnicht schwer, aber ich hab ein kleines Problem mit der Ausgabe von Bildern über TS mit FAL.
Situation ist folgende:
Es geht um eine Mitarbeiterdarstellung. Die Mitarbeiter liegen in Form von tt_content Datensätzen vor.
Es soll auch nach Mitarbeiter gesucht werden können. Das ist mit der tt_content.search über Typoscript gelöst.
(ja ich weiß es gibt Addressdatensätze und gute Suchextensions, aber das soll halt so bleiben).
Das ganze hat bis jetzt auf typo3 4.5 gut geklappt und geht auch nach dem upgrade immer noch.
Nur das Bild wird natürlich auf Grund von FAL nicht mehr ausgegeben.
Folgender Code wurde für die Ausgabe des Bildes im tt_content searchresult verwendet:
tt_content.search.20.renderObj.30.20 = IMAGE
tt_content.search.20.renderObj.30.20{
file.import = uploads/pics/
file.import.field = tt_content_image
maxW = 200
wrap = <div class="image">|</div>
}
Ich weiß es gibt unzählige Anleitungen für die Ausgabe mit FAL (FILES statt IMAGE, threadItAsReference etc.), hat aber bis jetzt nix funktioniert, außerdem sind das fast alles nur Beispiele, die sich auf das Media-feld der Seite beziehen.
Kann mir vielleicht jemand weiterhelfen oder hat irgendwie einen Hinweis/Link?
typo3 version ist übrigens 6.2.10
Grüße
Eduard
Etwa so:
20 = FILES
20 {
references {
table = tt_content
uid.data = field:uid
# dummthin from here
fieldName = image
}
maxItems = 1
renderObj = IMAGE
renderObj {
file.import.data = file:current:uid
file.treatIdAsReference = 1
altText.data = file:current:title
}
}
Hi,
danke für die schnelle Antwort. Bekomme damit folgende Fehlermeldung:
Catchable Fatal Error: Argument 3 passed to TYPO3\CMS\Frontend\Page\PageRepository::getFileReferences() must be an array... usw
und noch so einige mehr 🙂
Wahrscheinlich ist das nur nicht die richtige Stelle in der tt_content search an der ich es anbringe.
Nur damit wir die gleiche Basis haben.
Der TS-Teil sollte nun so aussehen:
tt_content.search.20.renderObj.30 = COA # das sollte ja ein COA sein, standard ist das ja nicht vorhanden
...
tt_content.search.20.renderObj.30.20 = FILES
tt_content.search.20.renderObj.30.20 {
references {
table = tt_content
uid.data = field:uid
fieldName = image
}
renderObj = IMAGE
renderObj {
file.import.data = file:current:uid
file.treatIdAsReference = 1
maxW = 200
altText.data = file:current:title
wrap = <div class="image">|</div>
}
}
Hallo,
ja, danke. Ich glaub das hat gepasst mit dem COA, hab ich wohl bloß nicht hingeschrieben.
Funktioniert aber trotzdem nicht.
Hier ist der ganze tt_content.search code. Falls du Lust hast ihn dir anzusehen. Vielleicht findest du einen Fehler. ...schön wärs jedenfalls 🙂
tt_content.stdWrap.innerWrap.cObject {
244 = TEXT
244.value = |
244.stdWrap.dataWrap = <div class="mitarbeiter" id="c{field:uid}">|</div>
}
#Suchen
#suchbereich
tt_content.search.20.allowedCols = tt_content.header-bodytext-image
#eingabemaske
tt_content.search.30{
target = _self
badMess = Bitte das Feld ausfüllen
}
tt_content.search.30.dataArray.10 >
tt_content.search.30.dataArray.10 {
label = Spezielle Suche <br />Bitte Namen eingeben
type = *sword = input, 15, 30
}
#suchbutton
tt_content.search.30.dataArray.40.value.data >
tt_content.search.30.dataArray.40.value = suchen
tt_content.search.30.REQ.labelWrap.wrap >
tt_content.search.30.REQ.labelWrap.wrap =
tt_content.search.stdWrap >
tt_content.search.30.layout >
tt_content.search.30.layout = <div class="li_bypass">###LABEL### </div><div class="li_bypass">###FIELD###</div>
#Definition Suchbereich in db
tt_content.search.30.dataArray.20 >
tt_content.search.30.dataArray.20 {
valueArray >
type = scols = hidden
value = tt_content.header
}
tt_content.search.30.dataArray.30 >
tt_content.search.30.dataArray.30 {
type = stype= hidden
value = 491
}
tt_content.search.30.wrap = <div class="staffSearch"> | </div>
#kein Datensatz
tt_content.search.20.noResultObj.10.data >
tt_content.search.20.noResultObj.10.value = Uuuups! diesen Mitarbeiter kennen wir nicht
tt_content.search.20.noResultObj.10.wrap >
tt_content.search.20.noResultObj.10.wrap = <h3> | </h3>
tt_content.search.20.noResultObj.20 = TEXT
tt_content.search.20.noResultObj.20{
value = zurück zur Auswahl
wrap = <p class="textp1"><a href="index.php?mitarbeiter"> | </a></p>
}
#gefundenes darstellen
tt_content.search.20.renderObj.10.typolink >
tt_content.search.20.renderObj.10.wrap >
tt_content.search.20.renderObj.10.field >
tt_content.search.20.renderObj.10.htmlSpecialChars >
tt_content.search.20.renderObj.10 = COA
tt_content.search.20.renderObj.10.10 = TEXT
tt_content.search.20.renderObj.10.10{
field = tt_content_header
stripHtml = 1
htmlSpecialChar = 1
}
tt_content.search.20.renderObj.10.stdWrap{
crop = 200 | ...
wrap = <h3> | </h3>
}
tt_content.search.20.renderObj.10 >
tt_content.search.20.renderObj.20.stdWrap{
crop = 200 | ...
wrap = <h5> | </h5>
}
tt_content.search.20.renderObj.20 >
tt_content.search.20.renderObj.30 = COA
tt_content.search.20.renderObj.30.10 = TEXT
tt_content.search.20.renderObj.30.10{
field = tt_content_bodytext
parseFunc < lib.parseFunc_RTE
wrap = <div class="info"> | </div>
#stripHtml = 1
#htmlSpecialChar = 1
#doNotStripHTML = 1
}
tt_content.search.20.renderObj.30.20 = FILES
tt_content.search.20.renderObj.30.20 {
references {
table = tt_content
uid.data = field:uid
fieldName = image
}
renderObj = IMAGE
renderObj {
file.import.data = file:current:uid
file.treatIdAsReference = 1
maxW = 200
altText.data = file:current:title
wrap = <div class="image">|</div>
}
}
tt_content.search.20.layout{
10 >
20 >
wrap = <div class="staffSearchResult mitarbeiter">###RESULT###</div>
}
[globalVar = TSFE:id = 501]
tt_content.search.25 = TEXT
tt_content.search.25.value = <a href="index.php?id=499" title="wieninger Mitarbeiter"> zurück zu Mitarbeiter </a>
[global]
tt_content.search.30{
labelWrap.wrap =
labelWrap.wrap >
stdWrap.wrap >
commentWrap.wrap >
dataArray.40.type = submit=submit
}
#sectionframe für Mitarbeiterdarstellung
tt_content.stdWrap.innerWrap.cObject {
244 = TEXT
244.value = |
244.stdWrap.dataWrap = <div class="mitarbeiter" id="c{field:uid}">|</div>
}
Gruß
Eduard
Oh, da bin ich etwas überfragt.
Wenn ich mir die Definition der allowedCols oder auch bei der Ausgabe die Felddefinition "tt_content_bodytext" anschaue, ist hier ja irgendeine spezielle Logik im Hintergrund am Werk.
Möglich wäre z.b. das der Bezug tt_content zur File-Tabelle gar nicht aufgebaut wird/werden kann,
aber wie gesagt, blanke Theorie.
Der FILES-Teil sollte so eigentlich für's rendern funktionieren, ich habe das selbst so im Einsatz.
Sorry o.O
Hi,
ioa... ich hab das vom Vorgänger übernommen und nur ein wenig angepasst...
Soll halt nur Header, Bodytext und Bild ausgegeben werden. Kommt dann alles in ein div und fertig 🙂
Aber trotzdem danke 🙂
Gruß
Eduard
Hallöle,
habs jetzt noch mal mit deiner Methode probiert und bekomme folgenden Fehler:
#1: PHP Catchable Fatal Error: Argument 3 passed to TYPO3\CMS\Frontend\Page\PageRepository::getFileReferences() must be an array, null given, called in /html/typo3/typo3_src-6.2.10/typo3/sysext/frontend/Classes/ContentObject/FilesContentObject.php on line 321 and defined in /html/typo3/typo3_src-6.2.10/typo3/sysext/frontend/Classes/Page/PageRepository.php line 1357
Also tut sich was 🙂 irgendwie
Weißt du vielleicht was ich damit anfangen soll?
Gruß
Eduard
Hallo Eduard,
herzlichen Dank für Euren Auftrag, den Fehler im TypoScript zu finden.
Die beiden wesentlichen Stellen sind folgende:
Siehe meine Kommentare im TypoScript-Schnipsel unten.
tt_content {
search {
20 {
// Hier muss die uid enthalten sein, andernfalls steht diese im weiteren Verlauf nicht zur Verfügung.
allowedCols = tt_content.uid-header-bodytext-image
...
renderObj = COA
renderObj {
10 = TEXT
10 {
...
}
20 = FILES
20 {
references {
table = tt_content
uid {
// Hier muss tt_content_uid verwendet werden. Nur uid gibt die id der gefundenen Seite aus.
field = tt_content_uid
}
fieldName = image
}
renderObj = IMAGE
renderObj {
file {
import {
data = file:current:originalUid // file:current:uid
}
}
}
}
}
}
}
}
Viele Grüße
Dirk