Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » разные css файлы ДНЁМ И НОЧЬЮ

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


     16.07.2013    день, ночь, смена    Все вопросы » Общие вопросы    3198

вопрос
как сделать разные 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
Юзер

onneuha - 16 июля 2013 12:21 -

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

Nagibaka
Эксперт

Nagibaka - 16 июля 2013 12:36 -

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

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

Frontend MotherFucker=:^^

Sander
PHP-developer

Sander - 16 июля 2013 14:37 -

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

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

Telegram: @sandev
Skype: Sander8804

crysnik
Юзер

crysnik - 16 июля 2013 12:53 -

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

crysnik
Юзер

crysnik - 16 июля 2013 12:58 -

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

MAPKOBKA
Юзер

MAPKOBKA - 16 июля 2013 13:52 -

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

TheImDim
Юзер

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
Юзер

crysnik - 16 июля 2013 13:05 -

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

crysnik
Юзер

crysnik - 16 июля 2013 13:06 -

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

crysnik
Юзер

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
Юзер

crysnik - 16 июля 2013 13:11 -

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

Gopr
Юзер

Gopr - 21 июля 2013 14:56 -

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

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

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

наверх