Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Шаблоны (TPL) » День и Ночь - смена шаблонов на сайте

День и Ночь - смена шаблонов на сайте


     22.04.2012    Все вопросы » Шаблоны (TPL)    2201

вопрос
Нашел такой отличный хак, но обнаружился небольшой косяк.
После правки init.php, нельзя назначить на стат. страницу отдельный шаблон...
Может кто подскажет решение? :)
1. Создаем минимум 2 шаблона.
2. Открываем файл /engine/inc/options.php
3. Находим:
showRow($lang['opt_sys_as'], $lang['opt_sys_asd'], makeDropDown($sys_con_skins_arr, "save_con[skin]", "{$config['skin']}"));

4. Заменяем на:
showRow('Шаблон днем', 'Выберите шаблон который будет днем на сайте', makeDropDown($sys_con_skins_arr, "save_con[skin_day]", "{$config['skin_day']}"));
    showRow('Шаблон ночью', 'Выберите шаблон который будет ночью на сайте', makeDropDown($sys_con_skins_arr, "save_con[skin_night]", "{$config['skin_night']}"));
    showRow('День начинается / заканчивается', 'Формат: 0 - 23 часа', "Нач: <input class=edit type=text style=\"text-align: center;\" name='save_con[skin_day_start]' value='{$config['skin_day_start']}' size=3> / Кон: <input class=edit type=text style=\"text-align: center;\" name='save_con[skin_day_end]' value='{$config['skin_day_end']}' size=3> ");

5. Заходим в админку а потом в настройки системы. Выбираем шаблон для дня и ночи и пишем во сколько начинается и заканчивается день (формат часов 0 - 23)
6. Открываем /engine/init.php
Находим:
$tpl = new dle_template;

Добавляем после:
$hour = date("G");
if ($hour > $config['skin_day_start'] and $hour < $config['skin_day_end'])
{
    $config['skin'] = $config['skin_day'];
}
else
{
    $config['skin'] = $config['skin_night'];
}

Ответа пока нет


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

ПафНутиЙ
Админ

ПафНутиЙ - 22 апреля 2012 09:45 -

Я бы сделал подобную вещь на js и css
в зависимости от времени суток яваскрипт будет подгружать разные css файлы, которые и превращают дневной шаблон в ночной.
А вообще по хорошему нужно предоставлять этот выбор пользователю. Может ктото захочет использовать дневной шаблон ночью и наоборот.

Каков вопрос - таков и ответ. Просто помните об этом.

klaf
Юзер

klaf - 22 апреля 2012 13:31 -

Не не не! :)
Как менять css я уже нашел, и даже тут есть решение! :)
Но нужно именно между шаблонами переключение!

Dimaxa_Demon
Юзер

Dimaxa_Demon - 23 апреля 2012 01:41 -

Сразу скажу, что я пока еще не сильно шарю в этом всем, но думаю умы сайта поймут и объяснят..
На мой взгляд ваше изменение перекрыло подгрузку того самого шаблона для статических страниц, то есть как я понимаю вам нужно найти выше переменную которая определяет какая страница подгружается, статическая или сайта и с каким шаблоном... (как то так)...
Ну просто ваш скрипт не зависит больше не от каких переменных кроме как времени, в чем и проявляется проблема..

ПафНутиЙ
Админ

ПафНутиЙ - 23 апреля 2012 19:15 -

klaf,
как то так скорее всего
$hour = date("G");
if ($hour > $config['skin_day_start'] and $hour < $config['skin_day_end'])
{
    $config['skin'] = $config['skin_day'];
}
elseif ($static_blablabla)
{
$config['skin'] = $config['skin_static'];
}
else
{
    $config['skin'] = $config['skin_night'];
}

только вместо $static_blablabla и skin_night нужно свои значения ставить.
но это не есть гуд, программисты вам это точно скажут.

Каков вопрос - таков и ответ. Просто помните об этом.

klaf
Юзер

klaf - 24 апреля 2012 00:07 -

А чего такого плохого? :)

ПафНутиЙ
Админ

ПафНутиЙ - 24 апреля 2012 09:49 -

А что хорошего в том, что действия, которые должны выполняться на стороне клиента, причём желательно по его усмотрению, выполняются на стороне сервера?

Каков вопрос - таков и ответ. Просто помните об этом.

rashpil
Эксперт

rashpil - 24 апреля 2012 11:32 -

А то что везде день и ночь наступают по-разному - это х**ня?) У меня например с украиной разница в -5 часов. Когда там только рассвет, у меня уже практически полдень.

+ к тому. Я бы посоветовал сделать на в профиле галочку "Менять шаблоны днём и ночью". Те кому не нравится, могли бы отключить сей девайс. А да, скрипт переключения тут уж лучше выполнять на JS.

Mr. Hyde
Юзер

Mr. Hyde - 24 апреля 2012 13:39 -

Оптимальный вариант, как уже сказал Паша и rashpil - это JS.

Dimaxa_Demon
Юзер

Dimaxa_Demon - 24 апреля 2012 15:55 -

А попробуй вот так:
$hour = date("G");
if( !($static) ){
    if ($hour > $config['skin_day_start'] and $hour < $config['skin_day_end'])
    {
        $config['skin'] = $config['skin_day'];
    }
    else
    {
        $config['skin'] = $config['skin_night'];
    }
}

Ну для статических нужно проверять выставлен ли для них особенный шаблон или нет.. Если нет - то давать шаблон дня или ночи, а если выставлен то впихивать тот что нужно...

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

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

наверх