Zum Inhalt springen

Browserweiche für Templates

Erstellt am 19. Januar 2007 · 4 Antworten · letzte Antwort am 19. Januar 2007

Tags: Templates & Layouts, Frage

kasimir83 ·

Morgens.

Nachdem ich nun zwei Tage lang umsonst versucht habe mein Template auch für IE5.5 und 6 zum Arbeiten zu zwingen, habe ich beschlossen zwei Templates anzulegen:

[browser = msie] && [version < 7]
page = PAGE
page {
    10 = TEMPLATE
    10 {
        template = FILE
        template.file = fileadmin/layout/index_ie.html
    }
}
[else]
page = PAGE
page {
    10 = TEMPLATE
    10 {
        template = FILE
        template.file = fileadmin/layout/index.html
    }
}
[global]
page.10 {
    	workOnSubpart = DOCUMENT
	marks {
	    fsSelector = COA
            fsSelector {
...

funktioniert nur ungünstiger Weise nicht. Da ich hier noch nichts gefunden habe, was auch gelöst worden wäre, versuch ich's noch mal.

Viele Grüße
kasimir

einpraegsam.​net ·

Sieht auf den ersten Blick nicht schlecht aus, man kann es noch etwas vereinfachen:

page = PAGE
page.10 = TEMPLATE
page.10.template = FILE

[browser = msie] && [version =< 7]
   page.10.template.file = fileadmin/layout/index_ie.html
[else]
   page.10.template.file = fileadmin/layout/index.html
[end]

page.10 {
        workOnSubpart = DOCUMENT
        marks {
            fsSelector = COA
            fsSelector {
...

müsste eigentlich funzen!?
Mach mal oben bei der Version ein =< statt <

kasimir83 ·

Danke für die schnelle Antwort. Das mit dem "< 7" passt, für den IE7 läuft das Template mit leichten Anpassungen über eine CSS-Weiche. Aber IE6 und 5.5 laden mir leider auch die index.html als Template. 🙁

kasimir83 ·
page.10.template = FILE
[browser = msie] && [version= <7]
    page.10.template.file = fileadmin/layout/index_ie.html
[else]
    page.10.template.file = fileadmin/layout/index.html
[end]

Das funktioniert jetzt, man beachte die leicht veränderte Schreibweise für die Versionsprüfung. Dafür geht das hier noch nicht:

page.headerData.20 = TEXT
[browser = msie] && [version= <6] 
page.headerData.20.value (
<link rel="stylesheet" type="text/css" href="fileadmin/layout/layout_ie_55.css" />
)
[browser = msie] && [version = 6] 
page.headerData.20.value (
<link rel="stylesheet" type="text/css" href="fileadmin/layout/layout_ie.css" />
)
[else] 
page.headerData.20.value (
<link rel="stylesheet" type="text/css" href="fileadmin/layout/layout.css" />
)
[end]

Und zwar funktioniert nur das erste Statement nicht. Jemand eine Idee?

kasimir83 ·

So. Template-Auswahl wie oben und das StyleSheet so:

page.includeLibs.user_tools = fileadmin/plugins/user_tools.php
page.headerData.20 = COA
page.headerData.20 {
    40 = USER
    40.userFunc = user_tools->user_setStyle
}

Das PHP-File:

<?php
	class user_tools
	{
		var $cObj;
		
		/**
		* @param string Empty string (no content to process)
		* @param array TypoScript configuration
		* @return string HTML output, showing the current Server time.
		*/
		
		function user_setStyle($conten,$conf)
		{
			if(preg_match("/MSIE 6/i",$_SERVER['HTTP_USER_AGENT'])) $content = "<link rel=\"stylesheet\" type=\"text/css\" href=\"fileadmin/layout/layout_ie.css\" />\n";
			elseif(preg_match("/MSIE 5/i",$_SERVER['HTTP_USER_AGENT'])) $content = "<link rel=\"stylesheet\" type=\"text/css\" href=\"fileadmin/layout/layout_ie_55.css\" />\n";
			else $content = "<link rel=\"stylesheet\" type=\"text/css\" href=\"fileadmin/layout/layout.css\" />\n";
			return $content;
		}
	}
?>

Hätte ich auch eher drauf kommen können.