Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы разные css файлы ДНЁМ И НОЧЬЮ

разные css файлы ДНЁМ И НОЧЬЮ


     16.07.2013    Общие вопросы    1961

вопрос
как сделать разные css файлы ДНЁМ И НОЧЬЮ. Нужно чтобы днем и ночью менялся цвет сайта

Ответил: MAPKOBKA


Возможно через крон добавить смену шаблона через ссылку.
http://dle-news.ru/?action_skin_change=yes&skin_name=day
http://dle-news.ru/?action_skin_change=yes&skin_name=night

Комментарии пользователей (12)

onneuha
4

33 | 5

onneuha - 16 июля 2013 12:21 - Юзер

MAPKOBKA, разве это ответ ? Написали-бы хоть в комментариях.

Nagibaka
5

42 | 34

Nagibaka - 16 июля 2013 12:36 - Эксперт

Крон? Зачем палить из базуки по воробьям?

Если необходимо подключение только разных css, то вполне достаточно php-скрипта, определяющего локальное время юзера, и который в зависимости от времени суток подключает разные цсс. Также подобное легко реализовать на js - но будет некошерно и возможно моргание при медленной скорости интернета.

Frontend MotherFucker=:^^

Sander
1126

1637 | 1204

Sander - 16 июля 2013 14:37 - Эксперт

php может выдать только время сервера.
Время пользователя только в JS.

SanDev.pro - мой блог.

ICQ: 404-037-556
Skype: Sander8804

crysnik
2

41 | 17

crysnik - 16 июля 2013 12:53 - Юзер

я же написал что только CSS, а не сам шаблон

crysnik
2

41 | 17

crysnik - 16 июля 2013 12:58 - Юзер

MAPKOBKA, и ещё тот ответ который ты написал, вообще не в тему

MAPKOBKA
4

80 | 18

MAPKOBKA - 16 июля 2013 13:52 - Юзер

Я извиняюсь, что добавил в ответ. Просто не давно на сайте, не знал, что есть разница, где писать. Думал ответ выбирается позже.

TheImDim
18

327 | 291

TheImDim - 16 июля 2013 13:02 - Юзер

MAPKOBKA оригинально, но глупо.

crysnik

Открываем: engine/classes/templates.class.php

Находим:


if (strpos ( $this->template, "[aviable=" ) !== false) {
            $this->template = preg_replace_callback ( "#\\[(aviable)=(.+?)\\](.*?)\\[/aviable\\]#is", array( &$this, 'check_module'), $this->template );
        }


Ниже добавляем:


if (strpos ( $this->template, "[time" ) !== false) {
            $this->template = preg_replace_callback ( "#\\[time([>!<=]+)([\d]+)\\](.*?)\\[/time\\]#is", array( &$this, 'time_block'), $this->template );
      }


Находим:

function check_module( $matches=array() ) {


Выше добавляем:


function time_block( $matches=array() ) {
        $_TIME = $this->_TIME;
                
        $time = $matches[2];
        $block = $matches[3];
        
        $time_now = date("H", $_TIME);

        eval("if( $time_now ".$matches[1]." $time ) \$result = \$block;");
        return $result;
                
      }


Как пользоваться:

В любом файле шаблона .tpl теперь прописываем следущее:

[time>10]
Сейчас 10 часов утра
[/time]

[time!=10]
Сейчас не 10 часов утра
[/time]

[time>=18]
Сейчас больше или равно 18 часов вечера
[/time]

[time<=23]
Сейчас меньше 23 часов вечера
[/time]

Подробнее про операторы сравнения в php

crysnik
2

41 | 17

crysnik - 16 июля 2013 13:05 - Юзер

я уже нашёл и попроще

crysnik
2

41 | 17

crysnik - 16 июля 2013 13:06 - Юзер

***Комментарий удален***

crysnik
2

41 | 17

crysnik - 16 июля 2013 13:07 - Юзер

 <script type="text/javascript">
<!--
function change(css)
{document.write('<link href=\"\/templates\/ser-size\/style\/styles'+css+'.css\" rel=\"stylesheet\"');}
var h=(new Date()).getHours();
if (h > 23 || h <4) change('_night');//ночь
if (h > 5 || h <24) change('_day');//день

//-->
</script>

crysnik
2

41 | 17

crysnik - 16 июля 2013 13:11 - Юзер

только вот пока не нашёл как сделать чтобы автоматически обновлялось, а то приходится нажимать обновить страницу

Gopr
10

494 | 164

Gopr - 21 июля 2013 14:56 - Юзер

Вот еще способ есть

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы