Hallo zusammen
Seit kurzem bin ich auch unter den Typo3 Developer :-). Nun auch schon meine erste Frage.
Ich setze ein random Headerbild mit:
lib.headerbildhome < plugin.tx_ccrandomimage_pi1
lib.headerbildhome {
path = fileadmin/header/
fileExt = jpg,jpeg,gif,png
renderObj = COA
renderObj {
wrap = |
10 = TEXT
10.value = <img height="350" width="800" src="###FILE_1###">
}
}
Das fixe Headerbild setze ich so:
lib.headerbildhome = IMAGE
lib.headerbildhome {
file.import = uploads/media/
file.import.data = levelmedia: -1,slide
file.import.listNum = 0
file.width = 800px
file.height = 350px
}
Wie kann ich nun realisieren, dass das fixe priorität hat. Also wenn bei Ressourcen ein Bild angegeben ist, wird dieses angezeigt, sonst random. Hoffe ihr könnt mir weiterhelfen.
Gruss Coreblade
Hi Coreblade,
benutze override. Damit kannst du ein Default überschreiben:
lib.headerbildhome < plugin.tx_ccrandomimage_pi1
lib.headerbildhome {
path = fileadmin/header/
fileExt = jpg,jpeg,gif,png
renderObj = COA
renderObj {
wrap = |
10 = TEXT
10 {
value = <img height="350" width="800" src="###FILE_1###">
override.cObject = IMAGE
override.cObject {
file {
import = uploads/media/
import.data = levelmedia: -1,slide
import.listNum = 0
width = 800px
height = 350px
}
}
}
}
}
Wenn also ein Bild im Media-Feld gefunden wird (was übrigens durch das slide ziemlich wahrscheinlich ist – Absicht?), wird dieses Bild benutzt. Sonst das Bild, das über value spezifiziert ist.
Soweit meine Theorie… Den Code hab ich nicht getestet. Ich glaube nicht, dass er so funktioniert, aber so ähnlich sollte es gehen. Ich kenne ccrandomimage nicht und kann's darum nicht genau sagen. Wahrscheinlich musst du das override auf der Ebene von renderObj einsetzen. Hat plugin.tx_ccrandomimage_pi1 stdWrap-Funktionalität? Dann wird es gehen.
Tosta
Hallo Tosta
Absolut perfekt deine Lösung! Funktioniert 1a! Danke viel mals!
Eine allgemeine Frage hätte ich noch.
Unter Tab Ressourcen in den Seiteneigenschaften gebe ich das Headerbild an. Für was genau wären dort die Bilder gedacht? Was kann sonst noch gemacht werden mit diesen Bildern?
Würdest du besser ohne slide?
Gr. Coreblade
Diese Bilder sind genau dafür gedacht, wofür du sie benutzt. Das Media-Feld gehört ja zu den Seiteneigenschaften. Das sind Daten, die der Seite einmal zugeordnet werden (nicht mehrmals wie Inhaltselemente), wie zum Beispiel das Bild im Seitenkopf. Abgesehen davon kannst du mit den Bildern (und den anderen Daten) machen, was du willst und was du mit TypoScript zuwege bringst.
Slide: Sorgt ja dafür, dass, wenn die aktuelle Seite kein Bild zugeordnet hat, das Bild der Elternseite benutzt wird bzw. das der Großelternseite u.s.w., bis bei einer der übergeordneten Seiten endlich ein Bild gefunden wird. Erst wenn auch deine Root-Seite keine Bild hat, kommt dein Random-Default zum Zuge, also möglicherweise gar nicht. Deshalb meine Frage, ob das deine Absicht war.
Tosta
Ah ok. In meinem Fall betrifft das die Startseite also die oberste Ebene. Von dem her spielts mit dem slide keine Rolle. Habe ihn jetzt trotzdem entfernt, da dieser keinen Sinn macht.
Danke viel mals für deine Hilfe Toasta!
Gr. Coreblade
Hallo zusammen, Hallo Toasta
Eine weitere Anforderung ist dazugekommen. Und zwar soll im Headerbild ein Batch eingebunden werden. Soll heissen ein Element, z.B. ein Stern mit Text als Inhalt, der zum Bild gerendert wird. Allerdings kriege ich das mit dem Random und fix nicht hin... Habe das Ganze über den GIFBUILDER versucht. ISt das der falsche Ansatz? Lediglich die overwrite Funktion funzt nicht mehr, da es diese beim IMAGE nicht gibt.
lib.headerbildhome < plugin.tx_ccrandomimage_pi1
lib.headerbildhome {
path = fileadmin/headerimages/
fileExt = jpg,jpeg,gif,png
renderObj = COA
renderObj {
//wrap = |
10 = IMAGE
10 {
file = GIFBUILDER
file {
XY = 800, 350
format = jpg
quality = 80
niceText = 1
10 = IMAGE
10.file = ###FILE_1###
10.file.width = 800
10.file.height = 350
20 = TEXT
20.text = Test
20.color = black
20.fontSize = 20
20.offset = 10, 30
20.transparentColor = #ffffff
}
}
override.cObject = IMAGE
override.cObject {
file {
import = uploads/media/
import.data = levelmedia: -1
import.listNum = 0
width = 800px
height = 350px
}
}
}
}
Hat da jemand Erfahrung mit?
Gr. Coreblade
Da kann ich jetzt aber nichts mehr mit anfangen: »Allerdings kriege ich das mit dem Random und fix nicht hin…«. Bitte nicht posten, dass du ein Problem hast, sondern wie dein Problem beschaffen ist! Danke.
Wenn override nicht benutzt werden kann, versuch's mit den andern Bedingungs-Funktionalitäten: fieldRequired, if u.s.w.
Der erste Code Teil bis zum override klappt ohne Probleme. Nur das fixe Bild wird wenn vorhanden ignoriert und nicht gesetzt. Da das Override nicht funktioniert. Leider habe ich keine Ahnung wie das mit andern Funktionen wie fieldRequired etc. klappen könnte. Bin erst seit kurzem Typo3er ;-)
Wenn du auf Bücher stehst: TYPO3 Kochbuch, O'Reilly-Verlag. Damit kannst du TypoScript lernen. Leicht ist das nicht; ich habe drei Projekte gebraucht um einigermaßen routiniert zu arbeiten und anspruchsvolle Aufgaben lösen zu können. Spaß macht TypoScript immer noch nicht (die Websites geschafft zu haben macht aber Spaß).
Wenn ich das richtig verstehe, ersetzt RandomImage den Marker ###FILE_1### durch einen Dateipfad. Und mit override willst du dafür noch ein Default zur Verfügung stellen. Also mach das override direkt beim file.import! Dabei sparst du dir auch die redundanten Einträge für width und height.
...
10 = IMAGE
10 {
file = GIFBUILDER
file {
XY = 800, 350
format = jpg
quality = 80
niceText = 1
10 = IMAGE
10.file {
import.cObject = TEXT
import.cObject {
value = ###FILE_1###
override.cObject = TEXT
override.cObject {
data = levelmedia: -1,slide
listNum = 0
wrap = uploads/media/
}
}
width = 800
height = 350
}
20 = TEXT
20 {
...
}
}
}
}
}
Wie gehabt: keine Garantie, nichts getestet, eher als Anregung zu sehen.
Du solltest aber wirklich verstehen, was hier passiert; also lern TypoScript, aber zuerst mal einfachere Sachen! Viel Erfolg!
Tosta
Hi Tosta
Tosta schrieb
Wenn ich das richtig verstehe, ersetzt RandomImage den Marker ###FILE_1### durch einen Dateipfad. Und mit override willst du dafür noch ein Default zur Verfügung stellen. Also mach das override direkt beim file.import! Dabei sparst du dir auch die redundanten Einträge für width und
Mit Override will ich das fixe Bild darstellen. Sprich wenn in Media ein Bild eingetragen ist, nimm das. Sonst Random. Jetzt ist der Fall so: Wenn in Media kein Bild vorhanden ist, wird ein weisser Hintergrund dargestellt.
Gruss Coreblade
In deinem vorletzen Post schreibst du: »Der erste Code Teil bis zum override klappt ohne Probleme«. Das ist ja wohl der Random-Teil. Der soll wirken, wenn in Media kein Bild eingetragen ist. Im letzten Post schreibst du: »Wenn in Media kein Bild vorhanden ist, wird ein weisser Hintergrund dargestellt«. Für mich heißt das, Random funktioniert doch nicht!
Und was meinst mit »weißer Hintergrund«? Nichts? Oder eine weiße Box (auf nicht weißem Untergrund)?
Bitte formuliere deine Fragen und Beschreibungen präzise, sonst können wir dir nicht helfen.
Tosta
Ok. Mit meinem Code funktionierte das Override ja nicht. Somit aber das Random. Mit deinem Code funktioniert nur das fixe aber das Random nicht. Mit weissem Hintergrund meine ich nichts. Der Text (20) wird zwar darübergelegt, darunter ist aber kein Bild also nur weiss.
Sorry für die Umstände...
Hab's hinbekommen. Habe lediglich deinen Code im Override mit "required = 1" ergänzt! Danke Tosta.
Wie aufwändig ist es, denn Text nun ausserhalb von TS verwaltbar zu machen?
PS:Hoffe ich gehe da mit meiner Fragerei niemandem auf die Nerfen. Aber so habe ich bereits sehr viel gelernt und profitiert. Danke an der Stelle für die kompetenten Antworten!
Code:
lib.headerbildhome < plugin.tx_ccrandomimage_pi1
lib.headerbildhome {
path = fileadmin/headerimages/
fileExt = jpg,jpeg,gif,png
renderObj = COA
renderObj {
10 = IMAGE
10 {
file = GIFBUILDER
file {
XY = 800, 350
format = jpg
quality = 80
niceText = 1
10 = IMAGE
10.file {
import.cObject = TEXT
import.cObject {
value = ###FILE_1###
override.cObject = TEXT
override.cObject {
required = 1
data = levelmedia: -1
listNum = 0
wrap = uploads/media/
}
}
width = 800
height = 350
}
20 = TEXT
20.text = Test
20.color = black
20.fontSize = 20
20.offset = 10, 30
20.transparentColor = #ffffff
}
}
}
}
Coreblade schrieb
Wie aufwändig ist es, denn Text nun ausserhalb von TS verwaltbar zu machen?
Du kannst den Text als Seiteneigenschaft in der Tabelle pages speichern – entweder in einem Feld, das du nicht brauchst, oder in einem, das du mit einer eigenen Extension anlegst.
Coreblade schrieb
PS:Hoffe ich gehe da mit meiner Fragerei niemandem auf die Nerfen.
Tust du. Wenn deine Fragen klarer wären… Aber ich muss immer erst rätseln, was du meinst.
Coreblade schrieb
Aber so habe ich bereits sehr viel gelernt und profitiert.
Na immerhin. Dann lohnt sich ja die Arbeit.
Hallo
Im Anhang seht ihr mein Ergebnis. Allerdings ist der Weisse Text (Suspendisse...) nich wirklich Inhalt vom Bild im Hintergrund. Sprich mit offset kann ich es ausserhalb des Bildes schieben. Ist dies möglich, dass es quasi ein Element vom kleinen blauem Bild ist?
lib.headerbildhome < plugin.tx_ccrandomimage_pi1
lib.headerbildhome {
path = fileadmin/headerimages/
fileExt = jpg,jpeg,gif,png
renderObj = COA
renderObj {
10 = IMAGE
10 {
file = GIFBUILDER
file {
XY = 990, 350
10 = IMAGE
10.file {
import.cObject = TEXT
import.cObject {
value = ###FILE_1###
override.cObject = TEXT
override.cObject {
required = 1
data = levelmedia: -1
listNum = 0
wrap = uploads/media/
}
}
width = 800
height = 350
}
10.offset = 190,0
20= IMAGE
20 {
file = GIFBUILDER
file {
XY = 190, 350
//backColor = #000000
//transparentBackground = 1
10 = IMAGE
10 {
file = fileadmin/headerimages/picVisual.jpg
file.width = 88
file.height = 30
offset = 92, 285
}
20 = IMAGE
20 {
file = fileadmin/headerimages/picVisual.jpg
file.width = 88
file.height = 30
offset = 92, 320
}
}
}
30= IMAGE
30 {
file = GIFBUILDER
file {
XY = 250, 350
backColor = #000000
transparentBackground = 1
offset = 50, 50
10 = IMAGE
10 {
file = fileadmin/headerimages/picVisual.jpg
file.width = 200
file.height = 100
}
20 = TEXT
20 {
text.data = page:subtitle
niceText = 1
fontColor = white
fontSize = 20
offset = 5, 20
}
}
}
}
}
}
}

Habs hinbekommen.
Allerdings mit einem andernen Ansatz: zwei Div's welche die gerenderten Grafiken anzeigen.
Danke für eure Hilfe! 😃