Zum Inhalt springen

Besucher Auswahl der CSS ermöglichen?

Erstellt am 9. Oktober 2006 · 8 Antworten · letzte Antwort am 9. Oktober 2006

Tags: HTML & CSS, Frage

FunnyDingo ·

Hallo zusammen,

ich habe für meine Seite drei unterschiedliche CSS-Files. Eines davon wird via

page.stylesheet = fileadmin/css/main.css

im Template zugewiesen.

Ich würde meinen Besuchern nun gerne ermöglichen, im FE über ein DropDown eine CSS auszuwählen. Diese Auswahl sollte dann nach Möglichkeit in einem Cookie hinterlegt werden, so dass er immer wieder die CSS benutzt, die der Besucher ausgewählt hat.

Hat jemand eine Idee wie man so etwas realisieren kann?

Gruß,
Funny

Unbekannter Benutzer ·

Die Auswahl der CSS-Files ist kein größeres Problem. Du benutzt config.linkVars um eine neue GET Variable einzuführen, z.B. CSS, dann machst du ein Auswahlmenü mit TypoLink aus aktueller PID+CSS=X, also z.B.

index.php?id=44&css=1 / index.php?id=44&css=2 / index.php?id=44&css=3

Dann fragst du im TS per Conditions die Variable css ab und bindest das entsprechende File ein.

Gruß

Christian

FunnyDingo ·

Prinzipiell eine gute Idee, aber ich benutze RealUrl und möchte mir nur ungern die URLs mit einem Parameter für die CSS "versauen". Daher auch der Wunsch dies über ein Cookie zu machen.

Unbekannter Benutzer ·

na du kannst doch die auswahl auch in deine RealURL reincodieren lassen. Oder du machst daraus ein Formular mit POST Vars, da kann ich aber nicht viel zu sagen. Ich denke um die Cookies musst du dich kümmern, per JS oder PHP.

FunnyDingo ·

Das mit den PostVars gefällt mir am besten.

In der TSref habe ich gesehen, dass es ein PHP_SCRIPT-Objekt gibt. Damit sollte es mir ja möglich sein, eine eigene Funktion zu schreiben, die das Cookie erstellt/ausliest und dann via dieses $content den Pfad zur entpsrechenden CSS-Datei liefert. Das müsste im TS dann doch in etwa so aussehen:

cssselector = PHP_SCRIPT
cssselector.file = fileadmin/scripts/css.inc.php
page.stylesheet < cssselector

Die komplette Logik - zum ermitteln der korrekten CSS-Datei bzw. das Auswerten der PostVars - steckt dann in dem PHP-Script.

Ich werd das einfach mal ausprobieren.

FunnyDingo ·

Funktioniert leider nicht. Zum Test habe ich folgende PHP-Datei angelegt:

<?php
$content = "fileadmin/css/main.css";
?>

Also mehr als simpel. Im TS habe ich den o.g. Code hinterlegt, aber leider gibts nun keinen CSS-Tag mehr. Mag das daran liegen, dass page.stylesheet eine Resource erwartet und mit dem PHP_SCRIPT-Objekt nicht zurecht kommt?

FunnyDingo ·

Mir fällt da etwas ein:

Dürfte dieses Feature mein Caching nicht "unbrauchbar" machen? Ich müsste das Caching ja deaktivieren, sonst liegt die Seite ja mit einer bestimmten CSS im Cache und würde unabhängig von der benutzerdefinierten Auswahl ausgeliefert werden - oder?

Unbekannter Benutzer ·

korrekt das macht das Caching unbrauchbar, daher würde ich auch zu den GET Vars raten.
Ich hab noch nie mit PHP_SCRIPT gearbeitet, aber versuch mal daraus ein temp oder lib Objekt zu machen, also

lib.cssselector oder temp.cssselector

ansonsten vielleicht über stdWrap und userFunc, das habe ich schon erfolgreich eingesetzt, aber macht natürlich auch das Caching unbrauchbar.

FunnyDingo ·

Auf das Caching möchte ich nur ungerne verzichten. Da muss ich das wohl dich über die Gat Vars machen. Das wird spannnend - hab das noch nie gemacht (bin da eher noch Anfänger). Genaus wie die RealUrl-Konfiguration dafür.

Werde mir das aber ansehen und ggf. noch mal um hilfe bitten ;-)