Zum Inhalt springen

Probleme mit [browser]

Erstellt am 18. Juli 2003 · 5 Antworten · letzte Antwort am 25. August 2004

Tags: Frage

ingohill ·

Hallo!

Ich stehe vor einem - für mich großem - Problem!
Ich will im setup speziellen browsern ein Template zuweisen.

der bisherige code sieht so aus:

[version= <4]
[system=mac]
maintmpl.1.template.file = fileadmin/m4_template.html
[else]
maintmpl.1.template.file = fileadmin/w4_template.html
[end]
[else]
[browser=opera]
[version < 7]
[system=mac]
maintmpl.1.template.file = fileadmin/om_template.html
[else]
maintmpl.1.template.file = fileadmin/ow_template.html
[end]
[else]
[globalVar = GP:flash = 1]
maintmpl.1.template.file = fileadmin/noflash_template_ie.html
[else]
maintmpl.1.template.file = fileadmin/main_template_ie.html
[end]
[end]
[end]

jetzt funktioniert aber leider garnichts mehr bzw.
das letzte template wird generell gewählt!

Kann mir jemand helfen?

Vielen Dank!
Ingo

dj.​picasso ·

Hi,

ohne dass ich Dir sagen kann, ob diese Abfragen überhaupt so laufen, fehlen aus meiner Sicht auf jeden Fall die ENDEN.

[browser=MSIE] // müßte hier nicht so etwas erst einmal stehen? Wenn ja, dann bitte überprüfen ob MSIE richtig ist
	[version= <4] 
		[system=mac] 
			maintmpl.1.template.file = fileadmin/m4_template.html 
		[else] 
			maintmpl.1.template.file = fileadmin/w4_template.html 
		[end] 
	[else] 
		[browser=opera] 
			[version < 7] 
				[system=mac] 
					maintmpl.1.template.file = fileadmin/om_template.html 
				[else] 
					maintmpl.1.template.file = fileadmin/ow_template.html 
				[end] 
			[else] 
				[globalVar = GP:flash = 1] 
					maintmpl.1.template.file = fileadmin/noflash_template_ie.html 
				[else] 
					maintmpl.1.template.file = fileadmin/main_template_ie.html 
				[end] 
			[end] 
		[end] 
	[end] // hier fehlt aus meiner Sicht auf jeden Fall ein END
[end] // dies fehlt, falls die erste Zeile notwendig ist!!

Ciao
Der DJ

gaucho ·

Hi,

ich kann Dir zwar nicht sagen ob Dein oder Dj's Konstrukt funktioniert, habe aber in der TSRef-35_0(.pdf) eine andere Möglichkeit gefunden.

Auf Seite 38 steht als mögliche Condition "Useragent"

Examples:
If the HTTP_USER_AGENT is "Mozilla/4.0 (compatible; Lotus-Notes/5.0; Windows-NT)" this will match with it:
[useragent = Mozilla/4.0 (compatible; Lotus-Notes/5.0; Windows-NT)]
This will also match with it:
[useragent = *Lotus-Notes*]
... but this will also match with a useragent like this: "Lotus-Notes/4.5 ( Windows-NT )"

So kannst Du vielleicht Dein Konstrukt um diese ganzen Verschachtelungen erleichtern.

Ich habe aber auf Seite 12 und 13 der Referenz noch was zu Deiner Art der Abfrage gefunden. Wenn ich richtig liege reagiert Typo etwas empfindlich auf die Syntax, und wenn das richtig ist, dann müssen, wenn mehrere Konditionen die zu einem Verhalten führen sollen eben diese in die selbe Zeile geschrieben werden.
Auszug der TSRef 3.5:

Another example could be if you wanted to do something special in case a bunch of conditions is NOT true. There's
no negate-character, but you could do this:
[browser=netscape][usergroup=3]
# Enter nothing here!
[else]
page.10.value = This text displays only if the conditions above are not true!
[end]

bzw:

A condition has it's own line and looks like this:
(Some TypoScript)
[ condition 1 ][ condition 2]
(Some TypoScript only parsed if cond. 1 or cond. 2 are met)
[GLOBAL]
(Some TypoScript)
Now, if condition 1 or 2 is met, then the TypoScript in the middle would be parsed until [GLOBAL] (or [END])
resets the conditions and parses the TypoScript for everybody.

D.h. Du müßtest Deine Verschachtelungen etwas anders bauen.

Ansonsten würde ich Dir auf jeden Fall empfehlen zu dem Template den TypoScript Object-Browser aufzurufen, wenn ihm sowas Wichtiges stinkt, dann zeigte er Dir auch was und wo an, gleich oben mit einem roten "Error" (habe Heute selbiges mit einem ähnlichen aber einfacheren Konstrukt erleben dürfen.
Dann noch der Hinweis, der wahrscheinlich überflüssig ist, aber nur für den Fall:

derartige Konditionsabfragen dürfen nur im rootlevel des Setup-Feldes ausgeführt werden, innerhalb einer geschweiften Klammer funktionieren sie nicht.

Also nicht so:

seite = PAGE
seite.10 {
template = FILE
[Kondition1]
template.file = ......
[else]
template.file = .....
[end]
.........
}

Das geht auf jeden Fall in die Hose.

Definier außerhalb jeglicher page, etc-Definitionen ein temporäres Konstrukt das die Daten die Du benötigst aufnimmt, und übergebe sie dann zu passender Zeit der Variablen bzw. dem Konstrukt der die Daten benötigt.

So, ich hoffe das hilft Dir etwas weiter.

Beste Grüße

Gaucho

lavitto ·

Hallo zusammen

Habe auch eine kleine Frage zu diesem Thema.
Wie ist es möglich zwei Sachen abzufragen? z.B.

browser = ie & system = mac

könnt ihr mir da weiterhelfen?

Herzlichen Dank

Gruss lavitto

doku ·

könnt ihr mir da weiterhelfen?

hilf dir selbst, und schlag einfach in der ts-referenz nach...

lavitto ·

Hab ich bereits gemacht.

Nun habe ich es auf verschiedene Arten versucht, leider funktioniert keine.

Ich möchte als Standart das "css.css" und das "mozilla.css" laden. Wenn IE verwendet wird, möchte ich "ie.css" und wenn der IE auf MAC verwendet wird das "iemac.css" laden.

So funktioniert das nicht:

page.includeCSS.10 = fileadmin/start/css.css
page.includeCSS.20 = fileadmin/start/mozilla.css
[browser = msie]
  page.includeCSS.20 = fileadmin/start/ie.css
[else]
[system = mac][browser = ie]
    page.includeCSS.20 = fileadmin/start/iemac.css
[end]

In der TSref habe ich nur ein Beispiel gefunden in dem zwei Sachen abgefragt:

This matches with all 4+ browsers and netscape 3 browsers

[version= >4][browser= netscape3]

**********************************************************************
EDIT:
**********************************************************************

Ich habe es nun anders Versucht. Mit einer eigenen Funktion, die so aussieht:

function juhui_macie(){
  if (($GLOBALS[TSFE]->clientInfo[BROWSER] == "msie") AND ($GLOBALS[TSFE]->clientInfo[SYSTEM] == "mac")) {
    return true;
  }
  else { return false; }
}

Diese habe ich am Schluss ins localconf.php reingepackt und sie funktioniert auch.

Leider importiert mir Typo3 immer noch nicht das richtige CSS-Stylesheet.

Mein Typo-Script sieht so aus:

page.includeCSS.10 = fileadmin/template/css.css
page.includeCSS.20 = fileadmin/template/mozilla.css

[browser = msie]
  page.includeCSS.20 = fileadmin/template/ie.css
[userFunc = juhui_macie()=1]
  page.includeCSS.20 = fileadmin/template/macie.css  
[GLOBAL]

Könnt ihr mir helfen? Warum geht das nicht?

Pfade stimmen alle und Funktion funktioniert auch (lokal getestet mit ausgabe 1 und 0).

Danke für eure Hilfe

Gruss lavitto