Hallo,
gibt es in typoscript die Möglichkeit verzweigungen anzulegen, wie es mit anderen Programmiersprachen mittels if, else, elseif oder ähnlichem gibt?
Ganz konkret habe ich folgendes Problem.
Ich habe einige Seiten, denen ich eine Grafik zugewiesen habe.
Diese kann ich ja über:
#Platzhalter Headgrafik hinzufügen
HEADLINE = IMAGE
HEADLINE.file.import = uploads/media/
HEADLINE.file.import.field = media
HEADLINE.file.listNum = 0
auslesen und anzeigen.
Für den Fall, dass es keine Grafik gibt, möchte ich, dass der subtitle bzw. title der Seite als Grafik ausgegeben wird, was in etwa so aussehen würde:
HEADLINE.file = GIFBUILDER
HEADLINE.file {
backColor = #FFFFFF
XY = 630, 36
#Textinhalt der Grafik
10 = TEXT
10.text.field = subtitle // title
10.fontFile = fileadmin/difrarel/fonts/verdana.ttf
10.fontSize = 25
10.fontColor = #521E44
10.niceText = 1
10.offset = 5, 30
}
Im Prinzip zuche ich also irgendetwas, womit ich auslesen kann, ob das media-Feld gesetzt ist.
Ein weiterer Punkt, an dem eine Fallabfrage schön wäre ist eine Browserunterscheidung.
Ich möchte gerne je nach Browsertyp ein anderes Stylesheet laden.
page = PAGE
[WENN NETSCAPE]
page.stylesheet = fileadmin/style_netscape.css
[WENN IE]
page.stylesheet = fileadmin/style_ie.css
Hier stellt sich für mich auch noch die Frage, wie es mit dem Cache aussieht. Von einem anderen CMS kenne ich es so, dass ein Cache für jeden Browsertyp vorhanden ist. Ist dies bei Typo3 auch so?
Vielen Dank im Voraus
Heiko
Ein weiterer Punkt, an dem eine Fallabfrage schön wäre ist eine Browserunterscheidung.
Ich möchte gerne je nach Browsertyp ein anderes Stylesheet laden.
page = PAGE
[WENN NETSCAPE]
page.stylesheet = fileadmin/style_netscape.css
[WENN IE]
page.stylesheet = fileadmin/style_ie.css
Nennt sich Conditions:
Eine Referenz gibts unter https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Conditions/Index.html, beschrieben werden sie zb. in http://www.typo3.net/uploads/media/dokumentation.pdf
Zu dem Thema gibt es auch schon Posts, die du sicher über die Forumssuche findest.
Im Cache wird dann an der Stelle, an der das CSS eingebunden werden soll ein Marker gespeichert, der dann bei der Auslieferung der Seite ausgefüllt wird. Also nur ein Cache für alle Browser.
Hallo,
die Browserweiche konnte ich realisieren. Danke.
Somit bleibt mein ursprüngliches Problem, die Überprüfung, ob ein Mediafile vorhanden ist.
Wird das auch mit Conditions gelöst?
Ich hab einmal folgendes, leider ohne Erfolg versucht:
# Erstmal versuchen die Datei zu laden
page.10.marks.HEADLINE.HEADLINE = IMAGE
page.10.marks.HEADLINE.file.import = uploads/media/
page.10.marks.HEADLINE.file.import.field = media
page.10.marks.HEADLINE.file.listNum = 0
# Jetzt versuche ich zu überprüfen, ob die Grafik eine Breite von 0 hat. Sprich nicht vorhanden ist.
[page.10.marks.HEADLINE.file.width = 0]
page.10.marks.HEADLINE.file = GIFBUILDER
page.10.marks.HEADLINE.file {
backColor = #FFFFFF
XY = 630, 36
#Textinhalt der Grafik
10 = TEXT
10.text.field = subtitle // title
10.fontFile = fileadmin/difrarel/fonts/verdana.ttf
10.fontSize = 25
10.fontColor = #521E44
10.niceText = 1
10.offset = 5, 30
}
[global]
Kann ich mit Conditions überhaupt solche Vergleiche machen, oder muss ich dafür irgendetwas anderes (if oder stdWrap) verwenden.
Ich bin neu in Typoscript und noch nicht so richtig mit der Struktur der Sprache vertraut.
Daher wäre ein Beispiel toll.
Danke
Heiko
Schau Dir mal "override" an, das ist genau für sowas vorgesehen. Du legst erst mal Deine Standardausgabe fest (hier: GIFBUILDER, Seitentitelgrafik) und falls in den Dateien im Seitentitel was eingefügt ist greift override und überschreibt die Standardausgabe.
Viele Grüße
Niki
Hallo Niki,
folgendes hab ich jetzt versucht,
page.10.marks.HEADLINE = IMAGE
page.10.marks.HEADLINE.file = GIFBUILDER
page.10.marks.HEADLINE.file {
backColor = #FFFFFF
XY = 630, 36
#Textinhalt der Grafik
10 = TEXT
10.text.field = subtitle // title
10.fontFile = fileadmin/fonts/verdana.ttf
10.fontSize = 25
10.fontColor = #521E44
10.niceText = 1
10.offset = 5, 30
}
page.10.marks.HEADLINE.file.override.import = uploads/media/
page.10.marks.HEADLINE.file.override.import.field = media
page.10.marks.HEADLINE.file.override.listNum = 0
Leider funktioniert das nicht, ich bekomme mit diesem Script nur die generierten Bilder ausgegeben.
Wahrscheinlich hab ich aber auch nicht die Funktionsweise von override verstanden.
Für den Fall, dass eine Grafik vorhanden ist, müsste ich doch auch die Zuweisung
page.10.marks.HEADLINE.file = GIFBUILDER
wieder löschen, oder? Denn wenn eine Grafik vorhanden ist, soll diese ja nicht von GIFBUILDER aufbereitet werden.
Gruß
Heiko
Hallo Forum,
ich habe jetzt eine für mich befriedigende Lösung gefunden.
Ich erstelle einfach eine Grafik mittels des GifBuilders und lege in den zweiten Layer die zugeordnete Grafik. Wenn es keine Grafik gibt erscheint der Text, ansonsten liegt die Grafik über dem Text. Sieht dann so aus:
page.10.marks.HEADLINE = IMAGE
page.10.marks.HEADLINE {
file = GIFBUILDER
file {
backColor = #FFFFFF
XY = 630, 36 + [20.h]
#Textinhalt der Grafik
10 = TEXT
10.text.field = subtitle // title
10.fontFile = fileadmin/fonts/verdana.ttf
10.fontSize = 25
10.fontColor = #521E44
10.niceText = 1
10.offset = 5, 30
20 = IMAGE
20.file.import = uploads/media/
20.file.import.field = media
20.file.listNum = 0
}
}
Damit kann ich mich erstmal so zufrieden geben, wobei es natürlich noch einen Punkt gibt, den ich gerne schöner machen würde.
Die Höhe der Textgrafiken soll 36 Pixel betragen. Die alternativen Grafiken, die sich über die Texte legen sollen haben eine variable Höhe. Wenn es eine Grafik gibt kann ich mir die Höhe der Grafik ja über [20.h] zurückgeben lassen. Diesen Wert addiere ich bei file.XY einfach hinzu (XY = 630, 36 + [20.h]). Dadurch wird meine Grafik aber 36Pixel höher, als diese sein müsste.
Daher meine Frage, was steht in 20.h, wenn es keine Grafik gibt (0 oder undefined)? Und kann ich diesen Wert mittels Conditions überprüfen? Vielleicht über einen umweg diesen Wert in einer globalen Variable zwischenzuspeichern?
Würd mich freuen, wenn jemand dazu eine Lösung weiß.
Danke
Heiko