¿Cómo cambiar mi página de inicio según la hora del día?

8

He buscado por todas partes esto. ¿Cómo cambio mi página de inicio según la hora del día? Para ser absolutamente explícito, quiero:

  1. Entre las 8 a.m. y las 7 p.m. - Página de inicio 1 (nodo / 4)
  2. Entre las 7 p.m. y las 8 a.m. - Página de inicio 2 (nodo / 5)

Así que quiero diseñar dos páginas de inicio completamente diferentes y luego cambian según la hora del día.

Intenté un código pero no parece hacer el trabajo:

$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 : No soy un genio del código, así que no sabría por dónde empezar con ganchos y estoy a un millón de años de crear mis propios módulos.

Rich Stevens
fuente
1
consulte esta pregunta ( drupal.stackexchange.com/questions/1884/… ) para obtener más información sobre cómo cambiar programáticamente la portada.
Geoff

Respuestas:

6

Considere usar el módulo Reglas para establecer el nodo apropiado como su página principal.

Basado en la muestra en la pregunta, estoy asumiendo que el nodo / 4 es de lo que es el valor site_frontpage. Aquí está la regla real que se creará que podría funcionar en su caso:

  1. Crea una nueva regla
  2. Evento = se ve contenido
  3. Condición: comparación de datos -> node:nidigual4
  4. Agregue una condición adicional para verificar si la hora actual es entre las 7 p.m. y las 8 a.m.
  5. Acción: redireccionamiento de página a node/5

Para cualquiera que no esté familiarizado (suficiente / todavía) con las Reglas , consulte los 32 (!!!) excelentes tutoriales en video (+ gratis) Aprenda el marco de Reglas . Posiblemente también el conjunto similar de 8 video tutoriales sobre el módulo Flag , a menudo considerado como un complemento natural del módulo Reglas. Quizás también revise el conjunto de 30 tutoriales en video sobre el módulo Vistas ... La familiaridad con solo esos 3 módulos ( Vistas , Reglas y Bandera ) puede llevarlo bastante lejos en casi cualquier sitio de Drupal (como creador de sitios).

Pierre.Vriens
fuente
No estoy seguro de tener las habilidades para eso, pero gracias. Encontré esto que parece funcionar como una regla de selección en un panel: code$ now = time (); $ día = fecha ("D", $ ahora); return $ day == "Tue”; codesolo necesito que esto sea entre las 8 am-7pm ahora, si alguien sabe cómo puedo hacer eso, estaría agradecido. Gracias.
Rich Stevens
Finalmente lo resolvió; agregué esto a mi regla de selección de panel: code$ now = time (); $ día = fecha ("G", $ ahora); return $ día <"15"; codePara cualquier persona tan inútil como yo, esto significa que estoy verificando si el tiempo es antes de las 15.00 horas, si es así, esta regla pasa, así que mi panel muestra. Gracias.
Rich Stevens
3

Sugeriría un módulo personalizado con un par de ganchos cron (en una función hook_cron ).

  • Establezca un gancho cron (A) para cambiar la portada al nodo / 4.
  • Configure el otro cron hook (B) para cambiar la página de inicio a node / 5.
  • Instale Ultimate Cron y use el programador Crontab.
  • Ajuste el gancho A a * 8 * * *
  • Ajuste el gancho B a * 19 * * *

Por supuesto, eso solo funcionará según el reloj del servidor y no cambiará según la zona horaria del usuario. Si quieres eso, será más complicado.

Darvanen
fuente
Desafortunadamente, no soy un genio del código, así que no sabría por dónde comenzar con estos ganchos. Parece que tendré que pagarle a alguien. ¡Gracias por su respuesta en cualquier caso, podría ayudar a alguien más dotado técnicamente!
Rich Stevens
No tiene que ser un genio, Drupal y PHP son bastante fáciles de aprender. Pagar a alguien es una opción, pero también lo es aprender a hacer módulos personalizados =)
Darvanen
No sé lo que esto significa 'Establecer un gancho cron (A) para cambiar la página principal al nodo / 4'. Estoy a un millón de años de crear mis propios módulos.
Rich Stevens
Justo, es bueno saber sus limitaciones.
Darvanen
3

Echa un vistazo al módulo de clave de tema . Algunos detalles más al respecto, desde su página de proyecto:

ThemeKey le permite definir reglas de cambio de tema simples o sofisticadas que permiten la selección automática de un tema según la ruta actual, los términos de la taxonomía, el idioma, el tipo de nodo y muchas, muchas otras propiedades. También se puede ampliar fácilmente para admitir propiedades adicionales expuestas por otros módulos. En combinación con la herencia de temas de Drupal, puede lograr fácilmente características como:

  • canales de estilo individual
  • una pantalla de portada / "bienvenida"
  • un tema de Navidad seleccionado por fecha / hora
  • temas móviles para diferentes dispositivos móviles autodetectados
  • temas especiales para navegadores "limitados" o "antiguos"
  • contenido, usuario o temas específicos de roles
  • indicando su entorno (producción, puesta en escena, pruebas, sandbox, ...)
  • probar su rediseño de forma segura en un servidor en vivo
Mike Barkas
fuente