Typoscript: Kontrastansicht über GP-Vars.

Get/Post-Vars in TYPOSCRIPT abgreifen und nutzen (inkl. RealURL)

Für einige Projekte sollte die Webseite eine Kontrastdarstellung erhalten; die Sinnhaftigkeit sei dahingestellt. Ich habe die zuerst per Javascript und Cookie gelöst, dann aber festgestellt, dass der Browser-Cache nicht mitmacht. Also brauchte ich eine eigene URL für die Kontrastdarstellung. Dank Teisinger habe ich folgende Lösung gefunden:

Im Setup muss zuerste eine GP-Var freigegeben werden. Hier als Beispiel "contrast" mit dem Wert 1. Zusätzlich gibt es noch eine Version in Leichter Sprache, die die GP-Var "L" nutzt:

 

config.linkVars = L(0-1), contrast(1)

 

Nun kommt als nächstes eine Condition, die dafür sorgt, dass etwas passiert, wenn die GP "contrast=1" der URL anhängt. In diesem Fall wird dem HTML-Tag eine Klasse hinzugefügt. Ich hatte dies zuvor per Javascript gemacht und das CSS entsprechend aufgebaut. Man könnte aber auch z.B. eine zusätzliche CSS-Datei einbinden oder die Seite komplett anders zusammensetzen.

 

[globalVar = GP:contrast=1]
    page.config.htmlTag_setParams = lang="de" class="contrast"
[global]

 

Jetzt sollte es schon gehen. Doch hängt der URL jetzt ein &contrast=1 an. Geht, sieht aber doof aus. Darum kann man noch RealURL die GP-Var beibringen, indem man folgendes in die realurl_config.php schreibt. Ebenfalls wieder mit Beispiel einer vorhandenen Mehrsprachigkeit (in diesem Fall wieder Leichte Sprache):

 

'preVars' => array (
        0 => array (
            'GETvar' => 'L',
            'valueMap' =>
            array (
                'de' => 0,
                'de_ls' => 1,
            ),
            'noMatch' => 'bypass',
        ),

        '1' => array (
            'GETvar' => 'contrast',
            'valueMap' => array (
                'hicontrast' => '1',
            ),
            'noMatch' => 'bypass',
        ),
    ),

 

Nun sollte die URL z.B. so aussehen: https://www.domain.de/de_ls/hicontrast/seitensoundso/weitereseite/

Damit man nun aber auch hin und herschalten kann, braucht man noch ein Menü, das die GP-Var setzt:

 

lib.contrastmenu = COA
lib.contrastmenu {
     wrap = <div id="contrastmenu">|</div>
     20 = TEXT
     20 {
     value = Seiteninhalt mit <br /><b class="normal">mehr Kontrast</b>
     wrap = <div class="label choch">|</div>
     typolink.additionalParams = &contrast=1
     typolink.parameter.data = page:uid
     typolink.ATagParams = title="Contrast: hoch"
     }

     40 < .20
     40.value = Seiteninhalt mit <br /><b class="contrast">weniger Kontrast</b>
     40.wrap = <div class="label cnorm">|</div>
     40.typolink.additionalParams = &contrast=0
     40.typolink.ATagParams = title="Contrast: runter"
}

 

Wenn man nun immer nur das passende anzeigen möchte, kann man das per CSS steuern:

 

html .choch {
   display:block;
}

html.cnorm {
   display:none;
}

html.contrast .cnorm {
    display:block;
}
html.contrast .choch {
   display:none;
}

 

Voila