Войти

Показать полную графическую версию : [решено] Как сделать смену оформления сайта в зависимости от времени суток в php


binders
23-01-2009, 00:11
Как сделать смену оформления сайта в зависимости от времени суток в php
для HTML нашол а для PHP нет

давай попробуем это изобразить...
возьмем стандартный скрипт приветствия от времени суток:

<script language="JavaScript">
<!--
var time = new Date();
var hour = time.getHours();
if(hour > 22 & hour <= 6) document.write("Доброй ночи!");
if(hour > 6 & hour <= 11) document.write("Доброе утро!");
if(hour > 11 & hour <= 18) document.write("Добрый день!");
if(hour > 18 & hour <= 22) document.write("Добрый вечер!");
// -->
</script>

изменяем его под наши нужды:

<script language="JavaScript">
<!--
var time = new Date();
var hour = time.getHours();
if(hour > 22 & hour <= 6) parent.setstyle(style1.css); //ночь
if(hour > 6 & hour <= 11) parent.setstyle(style2.css); //утро
if(hour > 11 & hour <= 18) parent.setstyle(style3.css); //день
if(hour > 18 & hour <= 22) parent.setstyle(style4.css); //вечер
// -->
</script>

в принципе скрипт готов... его нужно поместить в радел body любого фрейма...
при входе в чат пользователь получит тот стиль, что соответствует времени суток...
но этот стиль останется таким все время нахождения чатланина в чате,
если только он не поменяет стиль вручную...
можно чуть изменить скрипт, чтобы автоматически происходила смена стиля при постоянном нахождении чатланина в чате:

<script language="JavaScript">
<!--
function styletime() {
var time = new Date();
var hour = time.getHours();
if(hour > 22 & hour <= 6) { parent.setstyle('style1.css'); }
if(hour > 6 & hour <= 11) { parent.setstyle('style2.css'); }
if(hour > 11 & hour <= 16) { parent.setstyle('style3.css'); }
if(hour > 16 & hour <= 22) { parent.setstyle('style4.css'); }
setTimeout("styletime()",5*60*1000) }
// -->
</script>

проверка осуществляется раз в пять минут, думаю, что этого достаточно...
ну, и нужно не забыть про запуск самой функции:

<script>styletime();</script>


и есть ещо один способ


<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
function getCSS()
{
datetoday = new Date();
timenow=datetoday.getTime();
datetoday.setTime(timenow);
thehour = datetoday.getHours();

if (thehour > 20)
display = "tree_twilight.css";
else if (thehour > 17)
display = "tree_sunset.css";
else if (thehour > 14)
display = "tree_afternoon.css";
else if (thehour > 11)
display = "tree_noon.css";
else if (thehour > 7)
display = "tree_morning.css";
else if (thehour > 4)
display = "tree_sunrise.css";
else if (thehour > 1)
display = "tree_twilight.css";
else
display = "tree_sunset.css";

var css = '<'; css+='link rel="stylesheet" href=' + display + ' \/'; css+='>';

document.write(css);
// End -->
}
</script>
<script language="javascript">getCSS();</script>

Устанавливаем один из стилей как дефолтный,
на случай, если у пользователя отключен JS.

<noscript>
<link rel="stylesheet" href="tree_sunset.css" type="text/css">
</noscript>


Но ето всё не то
мне надо чтобы 4 раза в сутки было так

<body id="dusk" class="f-default style<?=$num_sait['stail'];?>">
<body id="night" class="f-default style<?=$num_sait['stail'];?>">
<body id="day" class="f-default style<?=$num_sait['stail'];?>">
<body id="dawn" class="f-default style<?=$num_sait['stail'];?>">


тоесть "dusk" , "night" , "day" , "dawn" менялись местами по времени

имею это и немного знаю PHP

// Это скрипт JS
window.addEvent('load', function() {
if (document.body.id == '') {

if (tempus != false) {
timeofday = tempus;
document.body.id=tempus;
} else {
datetoday = new Date();
timenow=datetoday.getTime();
datetoday.setTime(timenow);
thehour = datetoday.getHours();

if (thehour >= 20)
timeofday = "night";
else if (thehour >= 17)
timeofday = "dusk";
else if (thehour >= 9)
timeofday = "day";
else if (thehour >= 5)
timeofday = "dawn";
else
timeofday = "night";

document.body.id=timeofday;

}
Cookie.set('dim-tempus', timeofday, {duration: 1/24,path: "/"});
}
});

DedAlex
23-01-2009, 00:37
Часы можно получить вот так$thehour=date("G")а дальше сранивайте и делайте оформление :)

Sham
23-01-2009, 04:09
// Это скрипт JS
window.addEvent('load', function() { »
это только с js-библиотекой будет работать (c mootools точно, и еще от версии зависит)...

на сервере время клиента неизвестно, можно дополнительно искать страну по IP или как у вас кукис ставить и проверять... но в принципе лучше стиль у клиента подгружать сразу (как в первом листинге)...

binders
23-01-2009, 05:18
//надо было


<body id="dusk" class="f-default style<?=$num_sait['stail'];?>">
<body id="night" class="f-default style<?=$num_sait['stail'];?>">
<body id="day" class="f-default style<?=$num_sait['stail'];?>">
<body id="dawn" class="f-default style<?=$num_sait['stail'];?>">

//сделал

<body id="<?php
$h=date('H');
if ($h>=1 && $h<=7)
{echo "night";}
elseif ($h>=8 && $h<=11)
{echo "dawn";}
elseif ($h>=12 && $h<=20)
{echo "day";}
elseif ($h>=21 && $h<=24)
{echo "dusk";}
?>" class="f-default style<?=$num_sait['stail'];?>">

//итог стиль сайта меняется 4 раза за сутки




примерно как сдесь (http://demo.rockettheme.com/nov07/index.php?option=com_content&task=view&id=21&Itemid=42)

Sham
23-01-2009, 05:52
стиль сайта меняется 4 раза за сутки »
по времени сервера...

binders
23-01-2009, 19:28
по идее должно менятся по времени железа юзера

binders
26-01-2009, 01:48
Оказалось я был жутко не прав в денвере всё работало так как время сервера и юзера тоесть меня было одно и тоже
но как только залил всё на сервер перестало работать оказалось PHP обробатывает по серверному времени
помогите сделать чтоб стили менялись по времени юзеров

Sham
26-01-2009, 18:09
второй листинг должен сработать...

binders
27-04-2009, 01:28
Здрасте не прошло и полу года как я опять заинтересовался этим вопросом
Вопрос
что надо прописать в php
чтоб "dusk" , "night" , "day" , "dawn" менялись местами в зависимости от времени суток
<body id="dusk" class="f-default style<?=$num_sait['stail'];?>">
<body id="night" class="f-default style<?=$num_sait['stail'];?>">
<body id="day" class="f-default style<?=$num_sait['stail'];?>">
<body id="dawn" class="f-default style<?=$num_sait['stail'];?>">
тоесть из этого скрипта
// Это скрипт JS
window.addEvent('load', function() {
if (document.body.id == '') {

if (tempus != false) {
timeofday = tempus;
document.body.id=tempus;
} else {
datetoday = new Date();
timenow=datetoday.getTime();
datetoday.setTime(timenow);
thehour = datetoday.getHours();

if (thehour >= 20)
timeofday = "night";
else if (thehour >= 17)
timeofday = "dusk";
else if (thehour >= 9)
timeofday = "day";
else if (thehour >= 5)
timeofday = "dawn";
else
timeofday = "night";

document.body.id=timeofday;

}
Cookie.set('dim-tempus', timeofday, {duration: 1/24,path: "/"});
}
});
сктипт выдран из дизайна на joomle

binders
04-10-2009, 05:23
всё решил проще некуда

но можно как нибудь попроще время прописывать ?
чтоб из админки на пхп попроще можно было время сменить ?
<script language=JavaScript>
var h=(new Date()).getHours();
if (h > 23 || h < 7) document.write("<body id='night' class='f-default'>");
if (h > 6 && h < 12) document.write("<body id='dawn' class='f-default'>");
if (h > 11 && h < 19) document.write("<body id='day' class='f-default'>");
if (h > 18 && h < 24) document. write("<body id='dusk' class='f-default'>");
</script>




© OSzone.net 2001-2012