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