Динамическая смена шаблона

Хотелось бы узнать: кто-ть пробовал динамически менять шаблон для сайта? Например днем один в светлых тонах показывается, а ночью — другой — в темных?

Или менять с каким-то интервалом, например раз в 5 часов. Думал о реализации что-то типа ротатора картинок, но тогда элементы дизайна меняются в разнобой.

Замену файлов кроном прошу не предлагать — это грузит сервер и не везде реализуемо.

13 комментариев

avatar
Например днем один в светлых тонах показывается, а ночью — другой — в темных?
Для этого хватит простенького JS и 2 CSS — один для ночи, другой для дня, соответственно.
avatar
А на счет JS можно поподробнее?
avatar
<script language="javascript" type="text/javascript">
date = new Date();
a = date.getHours();
if (a > 17 || a < 10 ) {
document.write("<link rel='stylesheet' href='{THEME}/css/header_day.css' type='text/css'>");
}
else
if (a > 9 || a < 18) {

document.write("<link rel='stylesheet' href='{THEME}/css/style.css' type='text/css'>");
}
</script>


Где header_day.css — стили для дня.
Этот код вставить между и .
avatar
Хм, а может проще в фале конфига написать условие, которое в зависимости от текущего времени будет объявлять нужный шаблон?
avatar
Это был бы хороший вариант. Кто-ть знает как такое можно реализовать, хаком может каким-ть?

зыж с CSS вариант, но разметку для шаблона не впишешь.
avatar
Легко. В конфиге пишем:

$sTime=date('H');
if($sTime>8 && $sTime<20){
    $config['view']['skin'] = 'day';        
}else{
    $config['view']['skin'] = 'night';    
}

тут например если время больше 8 часов но меньше 20 часов объявляем шаблон day, если же наоборот, то шаблон night
avatar
Наверно нужно еще кеш чистить при смене шаблона
avatar
в 0.4 кеш для каждых шаблонов храниться в раздельных папках. чистить не надо =)
avatar
это решение для какой версии ЛС? 0.4?
avatar


Вариант, к сожалению, сам шаблон не меняет. Но возможно изменить стиль (фон, цветовую палитру и тд.)


Были выбраны следущие промежутки времени:
С пяти утра, до восьми;
С восьми утра, до полудня;
С полудня, до трёх дня;
С трёх дня, до шести вечера;
С шести вечера, до девяти;
С девяти вечера до пяти утра;
Изменять и дополнять эти промежутки времени труда не составит.

Сам код:

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


Ну и приготовьте все нужные стили, без них не зафурычит :)


avatar
А если включен механизм «склеивания» таблиц стилей? Да еще написаны правила для подключения нужных стилей?
avatar
Тогда создаем еще 2 CSS-стиля (файла). Которые в конфиге прописывать не надо, и эти файлы должны отвечать за дневные/ночные изменения на сайте. Так же вставляем код (см. выше) и радуемся результату :).
avatar
Замену файлов кроном прошу не предлагать — это грузит сервер
Не верю!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.