Hi,
Ich steh vor einem Problem und habs trotz viel rumprobieren nicht hinbekommen.
Auf meiner Seite gibt es im Header ein Bild, dass zufällig angezeigt werden soll. Dazu gibt es einen Systemordner in dem Datensätze vom Typ "Image" abgelegt werden. Aus diesen Datensätzen sollen zufällig Bilder ausgesucht und der Platzhalter ersetzt werden.
Für erste Test möchte ich den Platzhalter (SITEIMAGE) in der Designvorlage einfach mal durch einen Text mit dem Dateinamen des Images ersetzen.
Mein Ansatz dazu war:
marks.SITEIMAGE = CONTENT
marks.SITEIMAGE {
table = tt_content
select {
where = pid = 7
max=1
selectFields = image
orderBy = sorting
}
renderObj = COA
renderObj {
10 = TEXT
10.field = image
}
}
Wobei 7 der PID des Systemordners entspricht und in der Spalte "image" der Tabelle auch der richtige Dateiname steht.
ABER: Ihr ahnt es schon, es passiert genau nichts - es wird nichts ausgegeben... Am Platzhalter kanns nicht liegen, habe das mit einem normalen Text schon durchgetestet. Und die die Orderby Clause ist auch noch auf "sorting", was für den Test aber mal egal ist.
Danke für Eure Hilfe & Ciao,
Mike
hallo,
mit folgenden Code kann man einen Datensatz aus der Datenbank holen.
temp.beispiel = COA
temp.beispiel {
5 = CONTENT
5 {
table = tt_content
select.orderBy = sorting
select.pidInList = 7
#select.andWhere =
}
5.renderObj.stdWrap.wrap = hier wird gewrapt |
}
marks.SITEIMAGE < temp.beispiel
ein paar kleine Fehler haben sich in dein Script eingeschlichen...
schau dir hier noch mal die genauen befehle an, Stichwort PID
https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Functions/Select.html
des Weitern schau wirklich mal mit phpmyadmin
(gibt es auch als extension) in die Tabelle tt_content rein, das macht es um einiges einfacher zu sehen was man denn ausgeben kann.
Dein renderObj ist einmal an der falschen Stelle und im field image steht auch kein Text...
Doch davon mal ganz abgesehen ich bin mir fast sicher das es da sicher auch ein paar Banner Extensions gibt die eine random Funktion integriert haben. 🙂
Hi,
Danke mal für das Beispiel, werde es gleich ausprobieren. Das mit der PID in der where clause habe ich jetzt nur zu testzwecken eingebaut, hatte davor auch pidinlist.
Hab mir die Tabelle schon angesehen...
Mit dem renderObject habe ich noch so meine Probleme. Ganz durchschau ich die t3 logik noch nicht 😉 Ist doch etwas ungewohnt.
Ich probier das jetzt mal und geb Dir Bescheid,
Danke & Ciao,
Mike
Hi,
Kaum macht mans richtig klappts auch schon 🙂
So sieht es jetzt aus:
#ZUFALLSBILD ANZEIGEN
marks.SITEIMAGE = COA
marks.SITEIMAGE {
10 = CONTENT
10 {
table = tt_content
select {
pidInList = 7
max=1
orderBy = sorting
}
}
10.renderObj.stdWrap >
#10.renderObj.stdWrap.wrap = hier wird gewrapt |
}
Noch ein kleines Problem:
Das Bild wird nun mit den Standard-Wraps der css-styled-content eingehüllt. Wie bekomm ich die weg? Ist eine Definition List (<dl>) und ein div-container.
Mein Versuch mit 10.renderObj.stdWrap > war leider nicht sonderlich von Erfolg gekrönt...
Danke & Ciao,
Mike
Ja, ist nett, bringt mir aber nichts... Längere Geschichte.
An sich ist das Thema ja schon gegessen, einzig die Standard-Wraps müssen noch verschwinden.
Ciao,
Mike
Aber offenbar weiss das hier niemand... Und gefunden habe ich zu diesem Thema auch nichts. Kann mir ja eigentlich nicht vorstellen, dass nur ich vor diesem Problem stehe...
temp.beispiel = COA
temp.beispiel {
5 = CONTENT
5 {
table = tt_content
select.orderBy = sorting
select.pidInList = 91
#select.andWhere =
}
# 5.renderObj.stdWrap.wrap = hier wird gewrapt |
5.renderObj =COA
5.renderObj {
40 = IMAGE
40 {
required = 1
wrap=|
file.import=uploads/pics/
file.import.field=image
file.width=100
file.height=100
}
}
}
page.5 < temp.beispiel
so noch mal in verbesster Form, habe das Skript snippet hier im Forum gefunden 🙂
dein Code einfach noch mal anpassen, und dann haste bild Ausgabe... dann schreib mal wie du die Random Geschichte klärst, das würde mich auch noch Interesse.
Hi,
Sensationell... Danke. Ich hatte den Fehler, dass ich bei file.import das Verzeichis geändert habe. Und zwar dorthin, wo das Original Image liegt.
Das Random-Thema habe ich gelöst, indem ich auf den Table einfach einem Query mit ORDERBY = RANDOM und LIMIT 0,1 absetze. Dafür gibt es in meiner Struktur einen Systemordner, in dem einzelne Bilddatensätze liegen.
Das TS mit Zufallsausgabe sieht nun so aus:
#ZUFALLSBILD IM HEADER ANZEIGEN
marks.SITEIMAGE = COA
marks.SITEIMAGE {
10 = CONTENT
10 {
required=1
table = tt_content
select {
pidInList = 7
max=1
orderBy = rand()
}
}
10.renderObj =COA
10.renderObj {
40 = IMAGE
40 {
required = 1
wrap=<div id="siteimage">|</div
file.import=uploads/pics/
file.import.field=image
file.width=530
file.height=170
}
}
}
Vielleicht hilft Dir das ja auch mal weiter 🙂
Vielen lieben Dank & Ciao,
Mike
orderBy = rand()
mensch wusste gar nicht das so was geht 🙂, na da danke ich dann doch auch mal recht herzlich für die Info.
haben wir beide wat gelernt 😉
jo, das geht.. Dafür gibts fünfzig millionen anderer Dinge in t3 die ich nicht kenne 🙂
Mik3e,
schönes Script, das du da gebaut hast.
Eine Frage habe ich da jedoch noch:
Wenn das Bild zufällig ausgetauscht werden soll, musst du doch irgendwo noch
den Seitencache verändert haben ...
Ansonsten wird bei mir nämlich immer nur die gecachte Seite geholt und die hat dann immer das gleiche Bild.
Hi,
Danke 🙂
Ja, das Caching hab ich in der Config der root Site deaktiviert (brauche ich für diese Site nicht).
Ciao,
Mike