Как изменить мою домашнюю страницу в зависимости от времени суток?

8

Я искал высоко и низко для этого. Как я могу изменить свою домашнюю страницу в зависимости от времени суток? Чтобы быть абсолютно явным, я хочу:

  1. С 8:00 до 19:00 - домашняя страница 1 (узел / 4)
  2. Между 7 вечера и 8 утра - домашняя страница 2 (узел / 5)

Поэтому я хочу создать две совершенно разные домашние страницы, а затем они меняются в зависимости от времени суток.

Я попробовал некоторый код, но он, похоже, не справляется с работой:

$current_front = variable_get('site_frontpage');

if($current_front== 'node/4'){
    variable_set('site_frontpage','node/5');
}else{
    variable_set('site_frontpage','node/4');
}

Примечание : я не программист, поэтому не знаю, с чего начать с ловушек, и я за миллион лет до создания своих собственных модулей.

Рич Стивенс
источник
1
см. этот ( drupal.stackexchange.com/questions/1884/… ) вопрос для получения дополнительной информации о программном изменении главной страницы.
Джефф

Ответы:

6

Попробуйте использовать модуль « Правила », чтобы установить соответствующий узел в качестве главной страницы.

Основываясь на примере в вопросе, я предполагаю, что это значение имеет узел / 4 site_frontpage. Вот фактическое правило, которое будет создано, которое может работать в вашем случае:

  1. Создать новое правило
  2. Событие = Контент просматривается
  3. Условие: сравнение данных -> node:nidравно4
  4. Добавьте дополнительное условие, чтобы проверить, является ли текущее время между 7 вечера и 8 утра.
  5. Действие: перенаправление страницы на node/5

Для тех, кто не знаком (достаточно / пока) с Правилами , ознакомьтесь с 32 (!!!) отличными (+ бесплатными) видеоуроками Изучите структуру правил . Возможно также аналогичный набор из 8 видеоуроков о модуле « Флаг », который часто рассматривается как естественное дополнение к модулю «Правила». Возможно, также рассмотрите набор из 30 видеоуроков о модуле Views ... Знакомство только с этими 3 модулями ( Views , Rules и Flag ) может помочь вам продвинуться практически на любом сайте Drupal (в качестве разработчика сайта).

Pierre.Vriens
источник
Не уверен, что у меня есть навыки для этого, но спасибо. Я обнаружил, что это похоже на правило выбора на панели: code$ now = time (); $ день = дата ("D", $ сейчас); return $ day == "Tue"; codeмне просто нужно, чтобы это было с 8 утра до 7 вечера сейчас, если кто-нибудь знает, как я могу это сделать, я был бы благодарен. Спасибо.
Рич Стивенс
Наконец-то все получилось; добавил это в мое правило выбора панели: code$ now = time (); $ день = дата ("G", $ сейчас); возврат $ day <"15"; codeДля любого столь же бесполезного, как я, это означает, что я проверяю, наступило ли время до 15.00, если это так, то это правило проходит, так что моя панель показывает. Спасибо.
Рич Стивенс
3

Я бы предложил пользовательский модуль с парой хуков cron (в одной функции hook_cron ).

  • Установите один крючок cron (A), чтобы изменить титульную страницу на node / 4.
  • Установите другой крючок cron (B), чтобы изменить титульную страницу на node / 5.
  • Установите Ultimate Cron и используйте планировщик Crontab.
  • Установить крюк А на * 8 * * *
  • Установить крюк B на * 19 * * *

Конечно, это будет работать только на основе часов вашего сервера и не будет меняться в зависимости от часового пояса пользователя. Если вы хотите, это будет сложнее.

Darvanen
источник
К сожалению, я не программист, поэтому не знаю, с чего начать. Похоже, мне придется кому-то заплатить. Спасибо за ваш ответ в любом случае, может помочь кому-то более технически одаренным!
Рич Стивенс
Вам не нужно быть умным, Drupal и PHP довольно просты в освоении. Оплата кому-то - это вариант, но учится создавать собственные модули =)
Дарванен,
Я не знаю, что это значит: «Установите один крючок cron (A), чтобы изменить титульную страницу на node / 4». Я на миллион лет от создания своих собственных модулей.
Рич Стивенс
Справедливо, приятно знать ваши ограничения.
Дарванен
3

Взгляните на модуль Theme Key . Еще несколько подробностей об этом на странице проекта:

ThemeKey позволяет вам определять простые или сложные правила переключения тем, которые позволяют автоматически выбирать тему в зависимости от текущего пути, терминов таксономии, языка, типа узла и многих других свойств. Он также может быть легко расширен для поддержки дополнительных свойств, предоставляемых другими модулями. В сочетании с наследованием тем Drupal вы можете легко получить такие функции, как:

  • индивидуально оформленные каналы
  • передняя страница / экран-заставка
  • выбранная дата / время рождественской темы
  • мобильные темы для различных автоопределенных мобильных устройств
  • специальные темы для «ограниченных» или «старых» браузеров
  • темы, связанные с контентом, пользователем или ролью
  • указание вашей среды (производство, подготовка, тестирование, песочница,…)
  • тестирование вашего редизайна безопасно на живом сервере
Майк Баркас
источник