Gå til innhold

Css bytte uten å gå tilbake til hovedsiden


Anbefalte innlegg

Hei

 

Jeg har et lite problem med en hjemmeside jeg lager på skolen. Jeg har laget et include script som skal legge hoved innholde på den siden man er på inn i en table collum og kun endre innholdet inni den kolonnen om man trykker på en link.

I tilegg vil jeg at det skal være mulig å endre stilark slik at folk med dårlig syn enten kan velge et stilark med større font, eller et annet stilark med høykontrast farger. Skriptet jeg inkluderer med ser slik ut:

	<?php
	function main () {
	// Variabler
	$Default = "hoved";
	$Folder = "phpfiler/"; 

	// Ser om en fil er etterspurt av bruker
	if (isset ($_GET['page'])) {
		// Får tak i og validerer sidevariabelen
		$Page = ($Page = substr (strtolower (preg_replace ('([^a-zA-Z])', '', $_GET['page'])), 0, 20)) ? $Page : $Default;
	} else {
		// Om ikke, bruk hovedsida
		$Page = $Default;
	}

	// Sette opp hele linken
	$Page = $Folder . $Page . ".php";

	// Ser om filen kan bli lest
	if (file_exists ($Page) && is_readable ($Page)) {
			// Om den er, kjører den siden
		include ($Page);
	} else {
		// Viser 404 error
		$Output = "<h1>404 Not found</h4>\n<p>Finner ikke siden.</p>\n";
	}

	// Sender fila
	echo $Output;
}

// Kjører main funksjonen.
main ();

	?>

Som jo leser av url baren og tar det som står etter index.php?page=XXXX og legger innholdet inn der jeg vil ha det.

I tilegg bruker jeg følgende link til .css dokumentene mine:

I headen har jeg:
<link rel="stylesheet" type="text/css" href="<?php if(isset($style)) { echo $style; } else { echo 'style.css';} ?>" />

Og for linkene har jeg:
		<a class="test" href="<?php echo $_SERVER['PHP_SELF'].'?style=stil';?>">Vanlig stil</a>
		<a class="test" href="<?php echo $_SERVER['PHP_SELF'].'?style=stilbig';?>">Vanlig stil stor</a>
		<a class="test" href="<?php echo $_SERVER['PHP_SELF'].'?style=hoykontrast';?>">Høykontrast</a>
		<a class="test" href="<?php echo $_SERVER['PHP_SELF'].'?style=hoykontrastbig';?>">Høykontrast stor</a>

Som gjør at jeg kan skrive index.php?style=style, og bruke de vanlige stilarket, eller index.php?style=hoykontrast osv. Det fungerer også med index.php?style=style&page=hoved.

 

Og til slutt har jeg et lite php script som loades slik i index.php siden:

<? require_once('switcher.php'); ?>

 

Som ser slik ut:

<?php
if(isset($_COOKIE['styleSet'])) {
$style = $_COOKIE['styleSet'];
} else {
$style = 'style.css';
}
if(isset($_GET['style']) && ($_GET['style'] == 'stil')) {
$style = 'style.css';
setcookie('styleSet', '', time()-(60*60));
}
if(isset($_GET['style']) && ($_GET['style'] == 'hoykontrast')) {
$style = 'hoykontrast.css';
setcookie('styleSet', '', time()-(60*60));
}
if(isset($_GET['style']) && ($_GET['style'] == 'stilbig')) {
$style = 'stylebig.css';
setcookie('styleSet', '', time()-(60*60));
}
if(isset($_GET['style']) && ($_GET['style'] == 'hoykontrastbig')) {
$style = 'hoykontrastbig.css';
setcookie('styleSet', '', time()-(60*60));
}

setcookie('styleSet', $style, (time()+(60*60*24*7*2)), '/');
?>

 

Spørsmålet hvordan skal jeg modde linkene til å la meg loade høykontrast stilarket uten å hoppe tilbake til hovedsiden min.

 

Mvh Erling

Lenke til kommentar
Videoannonse
Annonse

Siden dere allerede vet koden min, og hva jeg har gjort er det en ting til jeg lurer på.

Allt på siden fungerer nå, men det er enda en liten bug. Jeg prøvde å lage linken slik:

<a class="test" href="<?php echo "?{$_SERVER['QUERY_STRING']}&style={$style}";?>">Vanlig stil</a>

Da fungerte ingen ting, men derimot:

<a class="test" href="<?php echo "?{$_SERVER['QUERY_STRING']}&style=style";?>">Vanlig stil</a>

Fungerte.

 

Problemet er nå at om jeg åpner en side, endrer stilark og prøver å endre til et annet stilark uten å loade en ny side

blir linkene og selve URLen lenger, og siden validerer ikke lengre i XHTML(som er et krav). slik:

Vanlig side:
index.php
om jeg trykker på linken til hovedsiden:
index.php?page=hoved
første stilark bytte:
index.php?page=hoved&style=style
neste bytte uten å laste en annen side:
index.php?page=hoved&style=style&style=style
og neste link, linker mot:
?page=hoved&style=style&style=style&style=style

 

Kan jeg bruke regexp som i include scriptet på en måte som henter hva stylen er nå og bare bytter det ut isteden for å skrive det etter det som allerede står?

 

Takk for all hjelp!

Erling Haugstad

Lenke til kommentar

Skjønner ikke hvorfor du gjør det på den måten. Du kan gjøre det enkelere

 

1. Behold navn på fil/side/script i linkene

2. Når du klikker linken skjekker scriptet om du har satt ?style, hvis du har det skifter den style til det som er valgt, samtidig skjekker den om det er satt noe i ?redirec (rename hvis du vil). Hvis det er satt noe i redirect echoer den

 

Header ("Location: $_GET[redirect]");

 

Da vil ikke URLen ha noe i URLen som sier at den har skiftet style. det blir en ekstra reload på siden, men jeg mener at denne løsningen er bedre enn å beholde ?style=blabla i URLen som er unødvendig og stygt.

 

 

Ser nå at header-scriptet ikke ville fungert helt, men du kunne gjort det delevis ved å echoe et javascript (bruker det ofte i mine script selv)

 

echo "<script type='text/javascript'>
window.location = 'http://www.URL/$_GET[redirect].php'
</script>";

Endret av TheClown
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...