Zum Inhalt springen

Bild (Dateiname) aus der tt_content auslesen

Erstellt am 19. Juni 2007 · 12 Antworten · letzte Antwort am 18. Juli 2007

Tags: Inhaltselemente, Bilder, Frage

Mik3e ·

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

karlchen ·

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. 🙂

Mik3e ·

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

Mik3e ·

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

Mik3e ·

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

Mik3e ·

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...

karlchen ·
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.

Mik3e ·

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

karlchen ·
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 😉

Mik3e ·

jo, das geht.. Dafür gibts fünfzig millionen anderer Dinge in t3 die ich nicht kenne 🙂

suit4 ·

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.

Mik3e ·

Hi,

Danke 🙂
Ja, das Caching hab ich in der Config der root Site deaktiviert (brauche ich für diese Site nicht).

Ciao,
Mike