Avatar billede gil-galad Nybegynder
02. oktober 2003 - 20:36 Der er 18 kommentarer og
1 løsning

En stylesheet skifter

Jeg har prøvet at kigge lidt på stylesheet skifteren de har har: http://www.netsteder.dk/artikler/styleskift/styleskift.html , men kan ikke få det til at virke. Det skulle helst også kunne skifte mellem flere stylesheets end to.
Jeg tror det ville være simplest at lave det i PHP, så det er derfor jeg har skrevet dette her, og ikke i javascript. eller?
Optimalt ville være hvis den også gemte en cookie el. noget så den også brugte det samme stylesheet næste gang man besøgte siden(eller når man bladre på den)

Håber der er nogen der kender sådan en, og er så venlig at smide den/ et link til den.


Tak
Avatar billede ckh Nybegynder
02. oktober 2003 - 20:39 #1
Avatar billede ckh Nybegynder
02. oktober 2003 - 20:41 #2
Og en der benytter javascript (hvis du ombestemmer dig). Tror dog den første artikel er den bedste :)
http://www.alistapart.com/stories/alternate/
Avatar billede gil-galad Nybegynder
02. oktober 2003 - 20:42 #3
er igang med den første :-)
Avatar billede sukos Juniormester
02. oktober 2003 - 20:43 #4
hmm, i toppen af siden kan du jo bruge:

<?php
if(!isset($_COOKIE["style"])) {
setcookie("style", "style1", time()+(60*60*24*60), "/");
$style = "style1";
}else{
setcookie("style", $_COOKIE["style"], time()+(60*60*24*60), "/");
$style = $_COOKIE["style"];
}
?>

<link rel="stylesheet" type="text/css" href="/<?php echo $style; ?>.css">
Avatar billede sukos Juniormester
02. oktober 2003 - 20:49 #5
Og når du så linker til de forskellige styles:
<a href="<?php echo $_SERVER["PHP_SELF"]; ?>?stylesheet=style1">style1</a><br>
<a href="<?php echo $_SERVER["PHP_SELF"]; ?>?stylesheet=style2">style2</a>

Og så som det første i toppen af scriptet:

<?php
if(isset($_GET["stylesheet"])) {
  if(file_exists($_SERVER["DOCUMENT_ROOT"] ."/". $_GET["stylesheet"] .".css")) {
  setcookie("style", $_GET["stylesheet"], time()+(60*60*24*60), "/");
    }
header("Location:". $_SERVER["PHP_SELF"] ."");
exit;
}
?>
Avatar billede gil-galad Nybegynder
02. oktober 2003 - 20:53 #6
hmmm >>CKH... jeg kan ikke helt hitte ud af det med switcher.php filen (tror det er den der er problemet)
her er filen jeg vil have til at skifte mellem stylesheets'ne:

<html>
<head>
<link rel="stylesheet" type="text/css" media="screen" title="User Defined Style" href="<?php echo (!$sitestyle)?'style1':$sitestyle ?>.css" />
</head>
<body>
<form action="switcher.php" method="post">
<select name="set">
<option value="default" selected>Default</option>
<option value="style1">Crazy Red</option>
<option value="style2">Experimental Style</option>
</select>
<input type="submit" value="Change Style">
</form>
</body>
</html>
___________________

og her min switcher.php:
<?php
setcookie ('sitestyle', $set, time()+31536000, '/', 'http://localhost/', '0');
header("Location: $HTTP_REFERER");
?>
__________
Jeg har tre styles: default, style1 og style2... alle ligger i samme mappe
Avatar billede sukos Juniormester
02. oktober 2003 - 21:00 #7
Prøv at bruge vis kilde, for at tjekke hvilket stylesheet der bruges
Avatar billede gil-galad Nybegynder
02. oktober 2003 - 21:02 #8
nu virker default, men hvis man klikker på en anden style kommer man bare tilbage til den sidste side du var på
Avatar billede gil-galad Nybegynder
02. oktober 2003 - 21:03 #9
det er sikkert min switcher.php
Avatar billede sukos Juniormester
02. oktober 2003 - 21:05 #10
Så bare lav et hidden felt sammen med formen:
<input type="hidden" name="back" value="<?php echo $_SERVER["REQUEST_URI"]; ?>">

I switcher.php bruger du så:
header("Location:". $_POST["back"] ."");

Den der HTTP_REFERER er heller ikke særlig "gangbar"
Avatar billede gil-galad Nybegynder
02. oktober 2003 - 21:09 #11
nu kommer man tilbage til den rigtige fil, men der sker ikke rigtig noget med min style
Avatar billede sukos Juniormester
02. oktober 2003 - 21:14 #12
Ville nok bruge:

<?php
if(isset($_POST["set"])) {
setcookie ('sitestyle', $_POST["set"], time()+31536000, '/', 'http://localhost/', '0');
header("Location:". $_POST["back"] ."");
}
?>

Hvis serveren kører med register_globals = Off vil $set ikke "blive forstået"
Avatar billede gil-galad Nybegynder
02. oktober 2003 - 21:16 #13
nej... den skifter deværre staig ikke :'(
Avatar billede sukos Juniormester
02. oktober 2003 - 21:22 #14
hmm, prøv at bruge:
<?php
if(isset($_POST["set"])) {
setcookie ("sitestyle", $_POST["set"], time()+31536000, "/");
header("Location:". $_POST["back"] ."");
}
?>
Avatar billede gil-galad Nybegynder
02. oktober 2003 - 21:27 #15
IT WOOOOOOORKS!!!!!!!!!!!!!!


hvis i lige vil svare, sukos og ckh
Avatar billede sukos Juniormester
02. oktober 2003 - 21:30 #16
jow da! :O)
Avatar billede gil-galad Nybegynder
02. oktober 2003 - 21:31 #17
ckh?
Avatar billede ckh Nybegynder
02. oktober 2003 - 21:32 #18
Det er vist ikke meget der bør tilfalde mig for et enkelt link ;) Giv du bare points til Sukos.
Sukos>> Gemmer lige tråden til når jeg selv en dag ikke kan få det til at virke, men det virker faktisk endnu :)
Avatar billede gil-galad Nybegynder
02. oktober 2003 - 21:33 #19
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester