|
|
Ich | Entwicklung | Lösungen | Apache | PHP | mySQL | ||||||
Artikel
Skripte
|
StyleSwitching mit PHPDieser Artikel zeigt eine Lösung für sogenanntes Style Switching auf, d.h. das Anbieten verschiedener Cascading Style Sheets, auf denen sich der Besucher einer Webseite einen Style aussuchen kann. Viele vorhandene Lösungen sind von Webdesignern entwickelt und basieren entweder auf JavaScript oder auf mangelhaftem PHP. Die Nachteile von JavaScript-Lösungen sind offensichtlich, doch auch im Internet findbare Lösungen wie auf http://www.perun.net/archiv/2004/01/23/php-styleswitcher/ haben einige Schwächen, die ich hier versuche auszumerzen. So wird die Auswahl während eines Besuches einer Webseite in der Session gespeichert, bei aktivierten Cookies aber auch dauerhaft auf dem Client-Rechner. Der folgende PHP-Code erzeugt, anders als bei verbreiteten Lösungen, keine Warnungen oder Fehler bei bestimmten PHP-Konfigurationen, sondern ist universell einsetzbar. Kern der Lösung ist der folgende Abschnitt, der die zu nutzende CSS-Datei festlegt:
<?php
if(empty($STYLEREQUEST["style"])) {
if(empty($_SESSION["style"])) {
if(isset($_COOKIE["stylesheet"])) {
$_SESSION["style"] = $_COOKIE["stylesheet"];
} else {
$_SESSION["style"] = $stylefile[0];
}
}
} else {
if(!in_array($STYLEREQUEST["style"], $stylefile)) {
$STYLEREQUEST["style"] = $stylefile[0];
}
setcookie("stylesheet", $STYLEREQUEST["style"], time() + 3600 * 24 * 365, "/");
$_SESSION["style"] = $STYLEREQUEST["style"];
}
?>
Dabei entspricht Wenn per GET bzw. POST die Variable Im
<?php
for($i = 0; $i < count($stylefile); $i++) {
if($stylefile[$i] == $_SESSION["style"]) {
echo '<link rel="stylesheet" href="/'.$stylefile[$i].'.css"';
echo ' type="text/css" title="'.$stylefile[$i].'" media="screen" />';
} else {
echo '<link rel="alternate stylesheet" href="/'.$stylefile[$i].'.css"';
echo ' type="text/css" title="'.$stylefile[$i].'" media="screen" />';
}
}
?>
Die anderen Styles werden als Skript ausprobieren / Quelltext des Skriptes ansehen Das Syntax-Highlighting der Codebeispiele wurde mit QFormat erreicht. |
|||||||||||
|
URL: www.intermitto.net/loesungen/artikel/styleswitch/ |
Home - Kontaktformular - Downloads - Suche und Sitemap - Impressum |
|||||||||||