Styleswitcher opnieuw, met Php
StyleSheet Switcher
Gebruiker laten kiezen via Php.
Na een reactie van Cepheus, die mij erop wees dat het beter was (en ook inderdaad waar is) om de javascript intrinsic events niet in document te hebben verweven.
Citaat van Cepheus:
JAVASCRIPT kan erg handig zijn voor dit soort dingen maar het is wel beter alles gescheiden te houden (content, style en behaviour). Zorg dus dat je JAVASCRIPT niet in het document verweven is met intrinsic events. Beter kan je je het desbetreffende element opzoeken met DOM acties zoals
getElementById. Wat helemaal ideaal zou zijn is dat als JS uit staat er gelinkt wordt naar een PHP versie.
Dus gaan we nu een Stylesheetswitcher maken met behulp van PHP er van uitgaande dat Javascript niet actief is, en geen javascript events meer in de links (voor te switchen), maar met php instructies.
Het voordeel van deze manier is dat als JAVASCRIPT niet aanstaat bij je bezoeker, er dan wordt verdergegaan met PHP, dus de switcher zal altijd werken.
En zoals de vorige keer ook al:
Mozilla browsers en Opera hebben deze fuctie standaard ingebouwd in het menu, maar Internet Explorer niet, daarom is er nood aan een extra functie zelf ter beschikking te stellen. Zo is iedereen tevreden.
De Html klaarmaken.
Ik zal niet alles herhalen wat hoe en waarom, dit kan je in de JAVASCRIPT versie van de stylesheet switcher nalezen, ik zal hier enkel de veranderingen neerzetten
De header.
<head>
<title>Style sheet switcher</title>
<?php
if(isset($_GET['style'])) {
$style = $_GET['style'];
}
else {
$style = 'normaal';
}
?>
<link rel="<?php if($style != 'normaal') { print 'alternate '; }
?>stylesheet" type="text/css" href="normaal.css" title="normaal">
<link rel="<?php if($style != 'groter') { print 'alternate '; }
?>stylesheet" type="text/css" href="groter.css" title="groter">
<link rel="<?php if($style != 'giga') { print 'alternate '; }
?>stylesheet" type="text/css" href="giga.css" title="giga">
</head>
Dus wat hier gebeurd is het volgende:
Er wordt eerst gekeken of er geen style reeds actief is met if(isset), is dit zo dan wordt de pagina met de voordien gekozen stylesheet weergegeven en de standaard stylesheet wordt dan in de header bepaald als alternate, zo dat het mogelijk is om terug te switchen, is dit niet het geval (eerste bezoek) dan wordt de standaard stylesheet genomen met else {$style = 'normaal';).
De navigatie voor de styleswitcher.
Om het ook te laten werken heb je natuurlijk een aantal links nodig die door erop te klikken de betreffende stylesheet aktief maken.
<a href="index.php?style=normaal">Normaal</a>
<a href="index.php?style=groter">Groter</a>
<a href="index.php?style=giga">Gigantisch</a>
Wens je de styleswitcher te gebruiken op elke pagina, dan laat je telkens de naam van de pagina weg: <a href="?style=naam">link</a>
En tot slot een werkend voorbeeld
Zoals altijd krijg je ook weer een visueel voorbeeld te zien.
Gelezen: 1199 | PHP, Design, CSS, Tutorials







Op Friday 05 August 2005
<link rel="<?php if($style != 'normaal') { print 'alternate '; }?>stylesheet" type="text/css" href="normaal.css" title="normaal">
Hoef je maar een keer te plaatsen als je die vergelijking weghaalt.
Je zegt dat je met isset naar een cookie kijkt maar je kijkt naar een get. Het zal wel handig zijn als je het ook in een cookie of nog beter een sessie zal opslaan.
Maak de links zo:
<a href="?style=normaal">Normaal</a>dan kan je ze op elke pagina gebruiken
Op Friday 05 August 2005
@Markei: het was ook de bedoeling dat er een cookie werd aangemaakt, maar om een of andere duistere reden werkt dat niet, daarom heb ik de Javascript verwijzing weggelaten, maar de tekst is nu aangepast, sorry was ik vergeten aan te passen.
Op Friday 05 August 2005
Ik heb het geprobeerd op http://www.stickylinks.be maar hij wil niet van stijl verwisselen… Of moet ik daarvoor eerst mijn cookies verwijderen ofzo?
Op Friday 05 August 2005
Er worden geen cookies gebruikt !!
Kleine tip, voeg een dummy javascript toe, dus gewoon een link naar geen javascript, kijk maar in het voorbeeld naar de code
Op Tuesday 09 August 2005
Ik heb een systeem gevonden op finalscripts.com dat werkt met sessies en het werkt verdomd goed! Dus mensjes…
Op Saturday 05 November 2005
Bedankt voor het script btw,
het doet zijn werk zeer goed als afdrukvoorbeeldscript.
Op Thursday 20 April 2006
Goed idee, maar ik zou dit inderdaad met sessies oplossen. Je hebt dan ook nog eens geen problemen met gebruikers die cookies uit hebben staan (sessies zijn serverside). Wellicht maak ik wel een voorbeeldje als ik tijd heb!
Op Wednesday 22 November 2006
die zet men toch enkel uit indien men serieuze problemen met etenslust ervaart.