Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] Как сделать смену оформления сайта в зависимости от времени суток в php (http://forum.oszone.net/showthread.php?t=129553)

binders 23-01-2009 00:11 1016383

Как сделать смену оформления сайта в зависимости от времени суток в php
 
Как сделать смену оформления сайта в зависимости от времени суток в php
для HTML нашол а для PHP нет

HTML код:

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

<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>


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


HTML код:

<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 раза в сутки было так

PHP код:

<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

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, {duration1/24,path"/"});
    }
}); 


DedAlex 23-01-2009 00:37 1016404

Часы можно получить вот так
Код:

$thehour=date("G")
а дальше сранивайте и делайте оформление :)

Sham 23-01-2009 04:09 1016483

Цитата:

Цитата binders
// Это скрипт JS
window.addEvent('load', function() { »

это только с js-библиотекой будет работать (c mootools точно, и еще от версии зависит)...

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

binders 23-01-2009 05:18 1016489

PHP код:

//надо было 


<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>=&& $h<=7)
{echo 
"night";}
elseif (
$h>=&& $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  раза за сутки

примерно как сдесь

Sham 23-01-2009 05:52 1016492

Цитата:

Цитата binders
стиль сайта меняется 4 раза за сутки »

по времени сервера...

binders 23-01-2009 19:28 1017156

по идее должно менятся по времени железа юзера

binders 26-01-2009 01:48 1019456

Оказалось я был жутко не прав в денвере всё работало так как время сервера и юзера тоесть меня было одно и тоже
но как только залил всё на сервер перестало работать оказалось PHP обробатывает по серверному времени
помогите сделать чтоб стили менялись по времени юзеров

Sham 26-01-2009 18:09 1020183

второй листинг должен сработать...

binders 27-04-2009 01:28 1105096

Здрасте не прошло и полу года как я опять заинтересовался этим вопросом
Вопрос
что надо прописать в php
чтоб "dusk" , "night" , "day" , "dawn" менялись местами в зависимости от времени суток
PHP код:

<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'];?>">

тоесть из этого скрипта
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, {duration1/24,path"/"}); 
    } 
}); 

сктипт выдран из дизайна на joomle

binders 04-10-2009 05:23 1234064

всё решил проще некуда

но можно как нибудь попроще время прописывать ?
чтоб из админки на пхп попроще можно было время сменить ?
HTML код:

<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>



Время: 12:55.

Время: 12:55.
© OSzone.net 2001-