Como alterar minha página inicial com base na hora do dia?

8

Eu procurei alto e baixo para isso. Como altero minha página inicial com base na hora do dia? Para ser absolutamente explícito, eu quero:

  1. Entre as 8:00 e as 19:00 - Página inicial 1 (nó / 4)
  2. Entre as 19:00 e as 08:00 - Página 2 (nó / 5)

Então, eu quero criar duas páginas iniciais completamente diferentes e elas mudam com base na hora do dia.

Eu tentei algum código, mas ele não parece fazer o trabalho:

$current_front = variable_get('site_frontpage');

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

Nota : Eu não sou um gênio do código, então não saberia por onde começar com ganchos e estou a um milhão de anos de criar meus próprios módulos.

Rich Stevens
fonte
11
consulte esta pergunta ( drupal.stackexchange.com/questions/1884/… ) para obter mais informações sobre como alterar programaticamente a primeira página.
Geoff

Respostas:

6

Considere usar o módulo Regras para definir o nó apropriado como sua página inicial.

Com base na amostra da pergunta, estou assumindo que o nó / 4 é o que é o valor site_frontpage. Aqui está a regra real a ser criada que pode funcionar no seu caso:

  1. Crie uma nova regra
  2. Evento = O conteúdo é visualizado
  3. Condição: comparação de dados -> node:nidigual4
  4. Adicione uma condição extra para verificar se o horário atual é entre 19:00 e 08:00.
  5. Ação: página redirecionada para node/5

Para qualquer pessoa que não esteja familiarizada (o bastante / ainda) com as Regras , confira os 32 (!!!) ótimos tutoriais em vídeo (+ grátis) Aprenda a estrutura de Regras . Possivelmente também o conjunto semelhante de 8 tutoriais em vídeo sobre o módulo Flag , geralmente considerado como um complemento natural ao módulo Rules. Talvez também revise o conjunto de 30 tutoriais em vídeo sobre o módulo Views ... A familiaridade com apenas esses três módulos ( Views , Rules e Flag ) pode levá-lo longe em praticamente qualquer site Drupal (como construtor de sites).

Pierre.Vriens
fonte
Não tenho certeza se tenho as habilidades para isso, mas obrigado. Eu encontrei isso que parece funcionar como uma regra de seleção em um painel: code$ now = time (); $ dia = data ("D", $ agora); return $ day == "ter"; codeeu só preciso que isso seja entre 8h e 19h, se alguém souber como posso fazer isso, ficaria agradecido. Obrigado.
Rich Stevens
Finalmente resolvi; adicionei isso à minha regra de seleção de painel: code$ now = time (); $ dia = data ("G", $ agora); retornar $ dia <"15"; codePara alguém tão inútil quanto eu, isso significa que estou verificando se o tempo é antes das 15h00, se é essa regra que passa, de modo que meu painel mostra. Obrigado.
Rich Stevens
3

Eu sugeriria um módulo personalizado com alguns ganchos cron (em uma função hook_cron ).

  • Defina um cron hook (A) para alterar a página inicial para o nó / 4.
  • Defina o outro cron hook (B) para alterar a primeira página para o nó / 5.
  • Instale o Ultimate Cron e use o agendador do Crontab.
  • Coloque o gancho A em * 8 * * *
  • Coloque o gancho B em * 19 * * *

Obviamente, isso funcionará apenas com base no relógio do servidor e não será alterado com base no fuso horário do usuário. Se você quiser, será mais complicado.

Darvanen
fonte
Infelizmente eu não sou um gênio do código, então não saberia por onde começar com esses ganchos. Parece que vou ter que pagar alguém. Obrigado pela sua resposta, em qualquer caso, pode ajudar alguém mais tecnicamente talentoso!
Rich Stevens
Você não precisa ser um gênio, Drupal e PHP são muito fáceis de aprender. Pagar alguém é uma opção, mas assim é aprender a fazer módulos personalizados =)
Darvanen
Não sei o que isso significa 'Defina um cron hook (A) para alterar a primeira página para o nó / 4'. Estou a um milhão de anos de criar meus próprios módulos.
Rich Stevens
Justo, é bom conhecer suas limitações.
Darvanen 5/05
3

Dê uma olhada no módulo Chave de Tema . Mais alguns detalhes sobre isso, na página do projeto:

O ThemeKey permite definir regras simples ou sofisticadas de troca de temas, que permitem a seleção automática de um tema, dependendo do caminho atual, termos de taxonomia, idioma, tipo de nó e muitas outras propriedades. Também pode ser facilmente estendido para suportar propriedades adicionais expostas por outros módulos. Em combinação com a herança de temas do Drupal, você pode facilmente obter recursos como:

  • canais com estilo individual
  • uma tela de primeira página / "splash"
  • um tema de Natal selecionado por data / hora
  • temas para dispositivos móveis para diferentes dispositivos móveis detectados automaticamente
  • temas especiais para navegadores "limitados" ou "antigos"
  • temas específicos de conteúdo, usuário ou função
  • indicando seu ambiente (produção, preparo, teste, sandbox,…)
  • testando seu reprojeto com segurança em um servidor ativo
Mike Barkas
fonte