Probleme mit [browser]

  • ingohill ingohill
    Padawan
    0 x
    41 Beiträge
    0 Hilfreiche Beiträge
    18. 07. 2003, 08:15

    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


  • 1
  • dj.picasso dj.picass...
    Jedi-Ratsmitglied
    0 x
    619 Beiträge
    0 Hilfreiche Beiträge
    18. 07. 2003, 08:27

    Hi,

    ohne dass ich Dir sagen kann, ob diese Abfragen überhaupt so laufen, fehlen aus meiner Sicht auf jeden Fall die ENDEN.
    [code:1:ac419054ce]
    [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!!
    [/code:1:ac419054ce]
    Ciao
    Der DJ

  • gaucho gaucho
    T3PO
    0 x
    26 Beiträge
    0 Hilfreiche Beiträge
    19. 07. 2003, 03:11

    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"

    [quote:4a4b349428]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 )"[/quote:4a4b349428]

    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:

    [quote:4a4b349428]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][/quote:4a4b349428]
    bzw:
    [quote:4a4b349428]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.[/quote:4a4b349428]

    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.

    [b:4a4b349428][color=red:4a4b349428]Also nicht so:

    seite = PAGE
    seite.10 {
    template = FILE
    [Kondition1]template.file = ......
    [else]template.file = .....
    [end].........
    }[/color:4a4b349428][/b:4a4b349428]
    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 lavitto
    R2-D2
    0 x
    68 Beiträge
    0 Hilfreiche Beiträge
    25. 08. 2004, 09:33

    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 doku
    Jedi-General
    0 x
    1624 Beiträge
    0 Hilfreiche Beiträge
    25. 08. 2004, 09:49

    [quote:fc1958fc8d]könnt ihr mir da weiterhelfen?[/quote:fc1958fc8d] hilf dir selbst, und schlag einfach in der ts-referenz nach...

  • lavitto lavitto
    R2-D2
    0 x
    68 Beiträge
    0 Hilfreiche Beiträge
    25. 08. 2004, 10:03

    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:
    [code:1:6e5e624c90]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]
    [/code:1:6e5e624c90]

    In der TSref habe ich nur ein Beispiel gefunden in dem zwei Sachen abgefragt:
    [quote:6e5e624c90]
    This matches with all 4+ browsers and netscape 3 browsers

    [version= >4][browser= netscape3]
    [/quote:6e5e624c90]
    [color=red:6e5e624c90][b:6e5e624c90]**********************************************************************[/b:6e5e624c90][/color:6e5e624c90]
    [color=red:6e5e624c90][b:6e5e624c90]EDIT:[/b:6e5e624c90][/color:6e5e624c90]
    [color=red:6e5e624c90][b:6e5e624c90]**********************************************************************[/b:6e5e624c90][/color:6e5e624c90]

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

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

    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:

    [code:1:6e5e624c90]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]
    [/code:1:6e5e624c90]

    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

  • 1