Dag- en nachtsite m.b.v. Javascript?
20 maart 2008 - 16:15   
geplaatst door: Kapotlood
Je komt wel eens sites tegen die kunnen aflezen hoe laat het bij de bezoeker
is, en afhankelijk daarvan een ander stylesheet laden. Zo hebben ze dus
met 2 stylesheets een compleet andere site.

Ik heb al gezocht via Google, maar ik kan er niet veel duidelijks over vinden.
Het enige wat ik heb kunnen uitvinden is dat het om een heel klein stukje
Javascript en/of PHP gaat, die de tijd van je systeem inleest en de betreffende
stylesheet laad.

Kan iemand me misschien een beetje op weg helpen met een linkje, stukje
code of iets dergelijks? :)

Mvg,
Joram

Dag- en nachtsite m.b.v. Javascript?
20 maart 2008 - 16:34    reactie #1
geplaatst door: Kapotlood
 :blush: Toch nog wat gevonden ondertussen. Ik kan weer even vooruit, hehe.
Dag- en nachtsite m.b.v. Javascript?
20 maart 2008 - 18:19    reactie #2
geplaatst door: Steve07
@Joram: Jouw voorbeeldje gebruikt PHP en PHP leest de tijd van de webserver en niet van de gebruiker. Daarom zou ik voor het inladen van een stylesheet javascript gebruiken, want dan werkt de site ook goed op bijvoorbeeld een computer in Australië.

Zelf kan ik zo'n javascriptje niet maken :blush: , maar je kan op sites als http://www.leejo.nl of http://www.javascriptzoeker.nl kijken.

Dag- en nachtsite m.b.v. Javascript?
20 maart 2008 - 18:29    reactie #3
geplaatst door: Kapotlood
Oh getver, daar zit wat in. Met de link die ik had gevonden
heb je een vaste tijd, in plaats van de lokale tijd. Bedankt
voor de hint, hehe.

Ik heb met je 2 links gezocht naar een Javascriptje waarmee
ik 2 verschillende stylesheets op een eigen tijd kan inladen
gezocht, maar kon 'm helaas nog niet vinden. Als je nog meer
van dit soort linkjes hebt: laat maar komen :-)

Dag- en nachtsite m.b.v. Javascript?
20 maart 2008 - 20:07    reactie #4
geplaatst door: Steve07
Oeps, de link van Leejoo klopte niet, moet http://www.leejoo.nl zijn.

Op javascriptzoeker zijn wel scriptjes die "Goedemorgen" e.d. zeggen. Misschien kan je zo'n scripje in je header plaatsen en dan de stylesheets laten veranderen, inplaats van die begroeting?

PS, die scriptjes staan onder "klokken".

Dag- en nachtsite m.b.v. Javascript?
20 maart 2008 - 20:49    reactie #5
geplaatst door: Leendert
Ik vond dit stukkie script dat ik ooit zelf schreef, het is wel oud maar het testte net ok.


<?php<p>$current_hour date ("H");<p>if($current_hour<"12" and $current_hour>="05") {<br>     echo "Goedemorgen";<br>     }<p>if($current_hour<"18" and $current_hour>="12") {<br>     echo "Goedemiddag";<br>     }<p>if($current_hour>="18" and $current_hour<="23") {<br>     echo "Goedenavond";<br>     }<p>if($current_hour>="00" and $current_hour <"05") { <br>     echo "Goedenacht";<br>     }     <p>?>
Dag- en nachtsite m.b.v. Javascript?
20 maart 2008 - 20:58    reactie #6
geplaatst door: Robert
[news]@ Leendert: werkt dat internationaal, m.a.w. ook bij mensen die geen 24 uurs-klok gebruiken?[/news]
Klik hier voor informatie over het onder de aandacht brengen van producten of diensten op MacFreak.
Dag- en nachtsite m.b.v. Javascript?
20 maart 2008 - 21:11    reactie #7
geplaatst door: Leendert
Ik zal het zo eens online zetten, mijn klok omgooien en testen, laat ik het even weten hier. Right now ben ik DEV300_m3 NL van OpenOffie.org uit een obscuur FTP krocht van internet aan het trekken dus dat duurt nog eventjes. :smile:

Greetz.

[EDIT] ik zit momenteel een beetje teveel op een hyper om zonder randschade mijn Systeemvoorkeuren in te gaan, laat de eer voor nu even over aan een ander. Wie kan zeggen of het werkt met AM/PM? [/EDIT]

(Bewerkt door Leendert om 21:59, 20-03-2008)

Dag- en nachtsite m.b.v. Javascript?
20 maart 2008 - 21:48    reactie #8
geplaatst door: Kapotlood
Bedankt voor de hulp zover :)

Ik heb ondertussen ook even verder gekeken, en van wat ik weet heb
je dan inderdaad Javascript nodig.

Het is eigenlijk zoiets als dit:
http://test.unintentionallyblank.co.uk/switcher.html
Maar dan in plaats van een link een systeem wat de tijd opzoekt.
Van wat ik weet kan PHP dat alleen van je eigen server halen, en niet
direct van de bezoekers lokale tijd toch? :-)

p.s.: als ik m'n eigen tijd op AM/PM zet werkt je linkje zo te zien ook nog,
maar dat kan ook komen omdat ik ook in Nederland zit ;-)

(Bewerkt door joram om 21:50, 20-03-2008)

Dag- en nachtsite m.b.v. Javascript?
20 maart 2008 - 22:00    reactie #9
geplaatst door: mk
met PHP heb je alleen de tijd van de lokale server (waar je script draait) niet van de gebruiker (als die in australie zit bv.) Dan heb je toch javascript nodig.

Met


var date = new Date();
var hh = date.getHours();

heb je in hh het huidige 'uur' zitten, die kan je dan weer gebruiken om je style te switchen.

iets als


if(hh > 8 && hh <= 18) {
overdagstyle
} else {
nachtstyle
}

(nieuwe style laden moet je ff opzoeken...)

Dag- en nachtsite m.b.v. Javascript?
20 maart 2008 - 22:34    reactie #10
geplaatst door: Kapotlood
Ik snap wat je bedoelt :)
Ik heb alleen geen idee hoe ik zoiets moet toepassen eerlijk gezegd.

Via de links die in dit draadje gegeven waren en degene die ik via
Google heb gevonden heb ik ook niets gevonden wat ik zoals
bijvoorbeeld Mootools of jQuery kan gebruiken. Dus als het ware
linken en klaar. En da's ook een beetje 't probleem; zodra ik dat
alleen hoef te linken aan een stylesheet kom ik er wel uit. Maar 't
is echt het Javascript zelf waar ik geen kaas van heb gegeten (op
hier en daar de tijdsduur aanpassen e.d.)

Dag- en nachtsite m.b.v. Javascript?
21 maart 2008 - 13:12    reactie #12
geplaatst door: Kapotlood
Nee helaas :) Da's ook meer naar de servertijd, en niet lokaal.
Ik bedoel eigenlijk meer zoiets: http://www.mariusroosendaal.com/
Dag- en nachtsite m.b.v. Javascript?
21 maart 2008 - 14:04    reactie #13
geplaatst door: istijn
Of zoiets als www.vakantiekamp.com . Een achtergrond naar dagdeel.
Bezoek onze vernieuwde site http://www.koekblik.com.
Dag- en nachtsite m.b.v. Javascript?
21 maart 2008 - 14:12    reactie #14
geplaatst door: mk

Citaat
joram om 13:12, 21-03-2008
Nee helaas :) Da's ook meer naar de servertijd, en niet lokaal.
Ik bedoel eigenlijk meer zoiets: http://www.mariusroosendaal.com/

? Volgens mij gebruikt dat voorbeeld Javascript. Dan is het niet de servertijd, maar de lokale tijd!

Dag- en nachtsite m.b.v. Javascript?
21 maart 2008 - 14:48    reactie #15
geplaatst door: Kapotlood
Inderdaad mk :D
Ik wil ook dat 't stylesheet afhankelijk van de lokale tijd van
de bezoeker wordt geladen. Als hij de servertijd pakt dan
schiet dat z'n doel mis :)
Dag- en nachtsite m.b.v. Javascript?
21 maart 2008 - 15:30    reactie #16
geplaatst door: mk
Jaa... Dat moet dus met javascript! Zoals het voorbeeld van mij en dat van istijn...

Javascript is clientside, en zal dus de lokale tijd van de bezoeker gebruiken. NIET de servertijd (zoals PHP).

:wacko:

Dag- en nachtsite m.b.v. Javascript?
21 maart 2008 - 16:07    reactie #17
geplaatst door: Steve07
En op de site die mk gaf gebruiken ze het volgende JavaScriptje:

<script language="javascript">
day = new Date()
x = day.getHours()
if (x>=0 && x<6) {
document.write ('<link rel="stylesheet" type="text/css" media="screen" href="/pivot/templates/css/nacht_css.css" />')
} else
if (x>=6 && x<11) {
document.write ('<link rel="stylesheet" type="text/css" media="screen" href="/pivot/templates/css/ochtend_css.css" />')
} else
if (x>=11 && x<19) {
document.write ('<link rel="stylesheet" type="text/css" media="screen" href="/pivot/templates/css/middag_css.css" />')
} else
if (x>=19 && x<22) {
document.write ('<link rel="stylesheet" type="text/css" media="screen" href="/pivot/templates/css/avond_css.css" />')
} else
if (x>=22 && x<24) {
document.write ('<link rel="stylesheet" type="text/css" media="screen" href="/pivot/templates/css/nacht_css.css" />')
}
</script>


:biggrin:

(Bewerkt door Steve07 om 16:07, 21-03-2008)
Dag- en nachtsite m.b.v. Javascript?
21 maart 2008 - 16:46    reactie #18
geplaatst door: Kapotlood
<script language="javascript">
day = new Date()
x = day.getHours()
if (x>=18 && x<6) {
document.write ('<link rel="stylesheet" type="text/css" media="screen" href="/pivot/templates/css/nacht_css.css" />')
} else
if (x>=6 && x<18) {
document.write ('<link rel="stylesheet" type="text/css" media="screen" href="/pivot/templates/css/dag_css.css" />')
}
</script>

Dus voor een dag en nacht stylesheet zou ik dus zoiets als hierboven
kunnen nemen? Ik heb 'm aangepast voor zover ik 't snap, maar als
dit stuk javascript goed is snap ik tenminste een beetje wat er gedaan
is, hehe. 't Eerste deel zegt dat hij de nacht-stylesheet moet nemen
als de tijd van de bezoeker tussen 18.00-06.00 is, en de dag-stylesheet
als de tijd later is dan 06.00, maar vroeger dan 18.00?

Goh, dat zoiets nog zo lastig te vinden is zeg, hehe :D

Wat me alleen niet duidelijk is, waarom dit maar zo'n klein stukje code
is, terwijl de site van Marius Roosendaal zo'n lap Javascript heeft gebruikt
om hetzelfde te gebruiken: hij heeft buiten de 3 stylesheet keuzes die
een gebruiker kan maken, ook een tijd-gevoelige stylesheet lader,
maar hij heeft een A4'tje vol met code alleen om die stylesheets te
laden: check

(Bewerkt door joram om 16:51, 21-03-2008)

Dag- en nachtsite m.b.v. Javascript?
21 maart 2008 - 17:03    reactie #19
geplaatst door: mk
Lang niet alles in die javascript is voor 't (automatisch) switchen van de stylesheet. Dat is slechts een klein gedeelte. Dan nog is ie wel iets uitgebreider (mede omdat z'n volledige javascript buiten de HTML pagina zit, en niet embedded zoals de voorbeelden van mij & istijn). Je kunt ook dat javascriptje helemaal strippen tot alleen de functies die nodig zijn om de style automatisch te switchen. Je zult zien dat het basis idee exact hetzelfde is als onze voorbeelden....

(Bewerkt door mk om 17:03, 21-03-2008)

Dag- en nachtsite m.b.v. Javascript?
21 maart 2008 - 17:06    reactie #20
geplaatst door: Kapotlood
Bedankt voor de info :)

Ik heb ondertussen ook een linkje naar Alistapart gevonden voor het
handmatig switchen tussen stylesheets: http://www.alistapart.com/articles/alternate/

Maar als ik dus jullie voorbeeld gebruik (mijn aangepaste stukje Javascript)
dan zou ik dus een site hebben die zichzelf automatisch als dag of nacht laat
zien afhankelijk van de lokale tijd... hoe werkt dat eigenlijk met extra pagina's?
Onthoudt "de site" deze instelling in een cookie of moet ik deze functie per
pagina opnieuw instellen ofzo?

Mvg,
Joram

Dag- en nachtsite m.b.v. Javascript?
21 maart 2008 - 18:35    reactie #21
geplaatst door: Steve07
Het JavaScriptje onhoud niets, je moet in elke pagina waar je de stylesheet include opnieuw dit scriptje neerzetten.
Dag- en nachtsite m.b.v. Javascript?
22 maart 2008 - 09:29    reactie #22
geplaatst door: Kapotlood
Ah, ik bedoelde 't eigenlijk meer in de zin van: als ik buiten die tijds-gevoelige
stylesheets de bezoeker ook een optie wil geven om deze stylesheets
handmatig te laten kiezen, onthoudt hij dat dan per pagina, of moet ik deze
dan opslaan in een cookie, zodat hij niet bij elke nieuwe pagina opnieuw
die keuze moet maken?

Dus bijvoorbeeld;
- Standaard staat style-main aan, want het is 13.00 in de middag
- De bezoeker kiest voor style-alt-1 op de homepage.
- Op de portfoliopagina schiet style-main weer aan, want dat is
de default stylesheet.

En dat zou ik dan willen voorkomen. De keuze die de bezoeker kiest
zou dan moeten worden opgeslagen in een cookie (denk ik), met de
optie om terug te gaan naar de tijdsgevoelige stylesheets :-)

Hehe, 't wordt wel technisch allemaal zeg :D

Dag- en nachtsite m.b.v. Javascript?
22 maart 2008 - 11:09    reactie #23
geplaatst door: Steve07
Klopt, dat zou je moeten opslaan in een cookie. Dat kan d.m.v. JavaScript en PHP, maar het nadeel van PHP is dan dat je moet doorverwijzen naar een nieuwe pagina. Je zou dan iets kunnen doen zoals bijvoorbeeld een bestand cookie-maken.php maken en daarin het volgende zeggen:

<?php<p>if ($_GET['stylesheet'] == "dag") {<p>setcookie("stylesheet""dag"time()+86400);
header("Location: $_GET['url-van']");<p>} elseif ($_GET['stylesheet'] == "nacht") {<p>setcookie("stylesheet""nacht"time()+86400);
header("Location: $_GET['url-van']");
} elseif (
$_GET['stylesheet'] == "automatisch") {
if(isset(
$_COOKIE['stylesheet'])) { 
  
// verwijder het cookie 
  
setcookie("stylesheet"""time()-3600); 
}
}
?>


Nu heb je een bestandje dat een cookie aanmaakt. Nu alleen nog zorgen dat je daarnaar linkt en controleert in de pagina zelf, dus dit bijvoorbeeld in je header:

<?php<p>if(isset($_COOKIE['stylesheet'])) { 
  
$cookie $_COOKIE['stylesheet'];<p>if ($cookie == "dag") {
print 
"<link rel="stylesheet" type="text/css" media="screen" href="stylesheet-dag" />";
} elseif (
$cookie == "nacht") {
print 
"<link rel="stylesheet" type="text/css" media="screen" href="stylesheet-nacht" />";
}<
p><p>} else { 
  
// Cookie bestaat niet, dus hier je JavaScriptje voor het controleren van de dag.
}
?>

De links waarmee je de nacht en dag stylesheet kan aanpassen zijn dit:

<a href="cookie-maken.php?stylesheet=dag&url-van=DE URL VAN DE PAGINA WAARVAN JE LINKT>Dag stylesheet!</a>
<a href="cookie-maken.php?stylesheet=nacht&url-van=DE URL VAN DE PAGINA WAARVAN JE LINKT>Nacht stylesheet!</a>
<a href="cookie-maken.php?stylesheet=automatisch&url-van=DE URL VAN DE PAGINA WAARVAN JE LINKT>Automatisch stylesheet!</a>

"DE URL VAN DE PAGINA WAARVAN JE LINKT" moet je vervangen door de url van de pagina waarvan je linkt. :biggrin:

Ik heb het snel uit de hand geschreven, dus als het niet werkt dan zal er nog wel een typfoutje in zitten. Zeg dan even wat er gebeurt. :shakehands:

(Bewerkt door Steve07 om 11:10, 22-03-2008)
Dag- en nachtsite m.b.v. Javascript?
22 maart 2008 - 15:06    reactie #24
geplaatst door: Kapotlood
Wow, bedankt :woot:
Ik dacht heel even dat het "maar" een kort regeltje hoefte te zijn, maar
dit had ik zelf niet uitgevonden, hehehe. Enorm bedankt voor de hulp :)