Hallo liebe Typo3-Community,
ich hab schon ein richtig schlechtes Gewissen, weil ich hier ständig fragen muss.
Also, mein Problem ist folgendes:
Ich möchte, dass CSS browserabhängig eingebunden wird.
Hierzu habe ich per TypoScript folgende Browserweichen gebaut.
includeCSS {
file1 = fileadmin/style/style_layouts.css
file2 = fileadmin/style/style_allgemein.css
[browser = msie] && [version <7]
file3 = fileadmin/style/style_allgemein_IE6.css
}
[browser = msie] && [version =7]
CSS_inlineStyle = body#startseite #rechts{margin-right:240px}
Die Problematik ist nun, dass das CSS für den IE7 immer eingebunden wird, und das für den IE6 nie.
Ich hatte anfangs conditional Comments im CSS. Aber wenn man die im CSS-Dokument definiert, funktionieren sie nicht richtig (oder gar nicht), wenn 2 Blöcke vorhanden sind.
Wie funktioniert die Browserweiche eigentlich im Hintergrund??
Mit $_SERVER['HTTP_USER_AGENT'] ???
Mein IE6 ist im Grunde ein Fake. (multiple-ie)
Hier die Ausgaben von $_SERVER['HTTP_USER_AGENT']
Firefox:
Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5
IE7:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
IE6:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Vielleicht liegts daran, dass das IE6 Skript nie eingebunden wird... wobei ich auch nirgends IE7 lese!
Aber warum implementiert Firefox das IE-Skript?
Conditions immer ausserhalb von Klammern!
Okay danke, das hat mich schon einen ordentlichen Schritt weitergebracht.
IE7 und Firefox funktionieren jetzt.
Nur der IE6 mag noch nicht.
Ist hier vielleicht irgendein Syntaxfehler drin?
[browser = msie] && [version <7]
page.includeCSS.file3 = fileadmin/style/style_layouts_IE6.css
[browser = msie] && [version =7]
page.CSS_inlineStyle = body#startseite #rechts{border: 1px solid #ff0000}
[global]
page {
includeCSS {
file1 = fileadmin/style/style_layouts.css
file2 = fileadmin/style/style_allgemein.css
}
Conditions können so nicht verschachtelt werden... Die zweite Condition befindet sich dadurch in der ersten, was doch herzlich wenig Sinn macht...
Wenn dann geht das mit einem [else]-Zweig, der aber hier auch nicht zu finden ist. Also nicht einfach Code erraten, sondern mal hier schauen:
https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Conditions/Index.html
Korrekt heißt dass dann für den IE6:
[browser = msie] && [version = < 7.0]
... Definitionen
[global]
Hm, weder da noch in der offiziellen Doku findet sich etwas zu einem ELSE-Zweig....
https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Conditions/Index.html
Es war mir ja selbst nicht ganz geheuer, dass die Condition nirgendwo geschlossen wird.Dass ein Vergleichsoperator immer mit einem "=" beginnen muss, habe ich jetzt begriffen.
Hier mein geänderter Code, der auch funktioniert:
[browser = msie] && [version= < 7]
page.includeCSS.file3 = fileadmin/style/style_layouts_IE6.css
[browser = msie] && [version = 7]
page.CSS_inlineStyle = body#startseite #rechts{border: 1px solid #ff0000}
[global]
Wie man allerdings einen ELSE-Zweig macht oder Conditions verschachtelt steht nirgendwo!!!
Die Condition ist dennoch falsch. Aber das habe ich ja oben schon geschrieben. Deine zweite Condition steht in der ersten. du musst du erste erst beenden.
Ansonsten eben mit else...
[Condition]
...
[else]
...
[end]
SLAng schrieb
Die Condition ist dennoch falsch. Aber das habe ich ja oben schon geschrieben. Deine zweite Condition steht in der ersten. du musst du erste erst beenden.
Deine Behauptung ist falsch,
eine neue Condition schließt grundsätzlich die erste.
Wichtig ist nur das der gesamte condition-Block mit
einem [global] nach der letzen Condition geschlossen wird.
Hallo Jenses...
Danke für den Hinweis.
Leider ist mir das unbekannt (was ja nix heißen muss).
Ich hab mich grad dann mal auf die Suche begeben und kann nirgendwo etwas schriftliches finden, was deine Aussage unterstützt. Man findet zwar immer wieder mal Beispiele in denen genau so vorgegangen wird, aber genauso viele Beispiele wo eben so nicht vorgegangen wird. Selbst in der offiziellen TSRef ist das nicht nach zu lesen.
Man findet überall hinweise zum Verknüpfen von Conditions mittels AND(&&) und OR(||). Aber von Verschachteln findet man da nur sproradisch mal die ELSE - Variante.
Also wenns stimmt, ist es gut, dann hab ich auch wieder was gelernt, aber es wäre schön wenn man das mal nachlesen könnte.