Автосмена темы оформления SMF2 RC2

Автор Bugo, 12 ноября 2009, 15:01:36

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Bugo

Подскажите, какой файл надо изменить и что там написать, чтобы темы оформления на форуме менялись в зависимости от времени суток (и может быть даже от дня недели).

Bugo

Вопрос актуален + интересует автозагрузка определённой темы оформления в зависимости от разрешения экрана пользователя.

Serifa

по-моему, это будет неслабой величины и солидности скрипт, который все время обращается к базе данных
а если еще и каждого юзера прощупывать на предмет его монитора... форум ляжет, наверное)
«- Помощник капитана Бакстер, - заявил Лумис, - безбожно врет. Все отнюдь не под контролем, вернее, не под его контролем. Корабль захвачен представителями небелковой формы разумной жизни, которые маскируются под обслуживающих роботов, а некоторые даже не делают и этого...»
«То, что у тебя есть, лечится антибиотиками» (nowhere man, 1995)
В телеге срочно нужны читатели!

0daliska

Цитата: Bugo от 12 ноября 2009, 15:01:36
Подскажите, какой файл надо изменить и что там написать, чтобы темы оформления на форуме менялись в зависимости от времени суток (и может быть даже от дня недели).
поспрошай хостера по поводу поддержки cron'a и редактора crontab :)
Сама не юзала (хоть на обоих хостингах поддерживается), но теоретически то, что ты хочешь...
Но не в зависимости от разрешения монитора юзера, а от времени суток, дня недели и т.п.
Уехала отдыхать. Сейчас без интернета до 1 августа. Приеду - выполню все обещания
® For members of Russian community (simplemachines.ru) only

Bugo

Cron поддерживается, мне только нужна инструкция применения :)

0daliska

Уехала отдыхать. Сейчас без интернета до 1 августа. Приеду - выполню все обещания
® For members of Russian community (simplemachines.ru) only

Drakonsa

if (date('H',time())<12) отображать ночную тему, а насчет отображения темы... Можно подсадить всех на "Тема по умолчанию" и менять ее на всем форуме.

BIOHAZARD

Цитата: Bugo от 12 ноября 2009, 15:01:36
Подскажите, какой файл надо изменить и что там написать, чтобы темы оформления на форуме менялись в зависимости от времени суток (и может быть даже от дня недели).
для начала скажите, в чём разница в этих темах? если только цвета, то сделать - как два байта переслать, если принципиально разные темы, то уже надо педали прикручивать
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Bugo

Конечно же, абсолютно разные темы. Хочется, чтоб народ, заходя на форум ночью, попадал на тёмную тему оформления, вне зависимости от того, что у него выбрано в настройках профиля. А в светлое время суток  — выбранная тема оформления по умолчанию.

BIOHAZARD

можно по крону писать номер темы оформления прямо в ДБ
меняйте хоть каждый час :о)
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Bugo


BIOHAZARD

нужно запрос к БД выполнить вида

UPDATE `smf_settings` SET `value` = '###' WHERE `smf_settings`.`variable` = 'theme_guests' LIMIT 1 ;

где ### - номер темы оформления
всё это пишется в php файл, который вызывается через крон два раза в сутки и подставляет нужное значение номера темы в зависимости от времени

я так понял, знания php у Вас есть, так что дальше справитесь, если нет - напомните, я сделаю полный код
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Bugo


Bugo

Реализовал так:

файл theme_switcher.php в корне форума
<?

$SSI_INSTALL = false;
if (!defined('SMF')) {
require_once('SSI.php');
$SSI_INSTALL = true;
}

if (date('H',time())<12)
{
$smcFunc['db_query']('',"
UPDATE {$db_prefix}settings
SET value = '5'
WHERE {$db_prefix}settings.variable = 'theme_guests'
LIMIT 1");
}
else
{
$smcFunc['db_query']('',"
UPDATE {$db_prefix}settings
SET value = '1'
WHERE {$db_prefix}settings.variable = 'theme_guests'
LIMIT 1");
}

?>

где 5 — ночная тема, 1 — дневная.

Запуск cron 2 раза в день:
curl -s http://домен.ru/theme_switcher.php > /dev/null

Всё верно?

Но ведь cron то будет  запускаться по времени сервера, а пользователи могут жить в разных часовых поясах.
Нельзя ли по IP определять время у гостя, зашедшего на форум? Или слишком много нагрузки будет на базу?

Mavn

а использовать $context['current_time'] для определения времени и в зависимости от результата выводить тему оформления ?
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

Bugo

Цитата: Mavn от 19 декабря 2009, 20:37:23
а использовать $context['current_time'] для определения времени и в зависимости от результата выводить тему оформления ?
Что-то вроде if $context['current_time'] < 12?

BIOHAZARD

тогда лучше смотреть в Load.php
// Load a theme, by ID.
function loadTheme($id_theme = 0, $initialize = true)
{
   
и т.д.

тогда можно каждому менять тему, через крон же только изменение сразу для всех
нагрузки на сервер такое решение не добавит
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ