Estoy comenzando un tema receptivo basado en Omega, concentrándome en el diseño móvil al principio.
Hay ciertos bloques que probablemente se considerarán demasiado "pesados" para incluir en el diseño móvil, y otros bloques que deberán introducirse específicamente para ese diseño (menús diluidos, barra de usuario atenuada, etc.).
Podría ocultar fácilmente los bloques no deseados en el diseño móvil con CSS, e incluir los bloques específicos para dispositivos móviles en el diseño predeterminado y ocultarlos (por lo que solo se muestran para dispositivos móviles), pero eso parece una forma bastante retrasada de pensar eso. Si no se muestran los bloques, la sobrecarga adicional en la que incurrirían sería realmente inaceptable (especialmente teniendo en cuenta la cantidad de consultas de db adicionales que agregaría el contenido en bloques ocultos).
Estoy pensando que debe haber una manera limpia y agradable de interceptar el proceso de toma de decisiones de bloque al principio de la construcción de la página, y excluir / incluir bloques basados en alguna detección de sistema operativo, pero estoy dejando en blanco cómo podría ser eso posible.
También voy a agregar el hecho de que Varnish se está ejecutando frente a este sitio, lo que debería hacer las cosas más divertidas :)
¿Existen módulos / estrategias conocidas que puedan ayudar con esto?
Debo agregar que usar el módulo Context no es una opción, ya que el sitio ya está desarrollado, y moverlo a Context sería una tarea enorme en este momento.
Respuestas:
Como ya se señaló en los comentarios, esto requiere que configure el barniz para que no se almacene en caché solo en la URL de solicitud, sino que también varíe en el agente de usuario. Hay un ejemplo relevante en el wiki de barniz, VCLExampleNormalizeUserAgent .
Una vez que la solicitud realmente llega al sitio, debe determinar qué bloques mostrar y no mostrar. Consideraría que no es menos que un desastre hacer esto con eval , por lo que las opciones más comunes que quedan son Context y Panels .
Con el sitio ya construido. Rehacer todas las páginas / colocación de bloques con cualquiera de los módulos probablemente no sea una opción, pero con un generador de perfiles, y aplicando 80-20 , podría ser posible obtener ganancias significativas de rendimiento al rehacer solo páginas específicas.
fuente
No puedo entrar en muchos detalles, ya que no he usado ninguno de los módulos durante años (construyo todos mis sitios con Context desde el principio y no he respondido a algo que no he construido para un mientras que no he tenido este problema antes), pero creo que deberías poder armar algo con Mobile Tools and Spaces.
Espacios
Herramientas móviles
Sin embargo, la página del proyecto para MT dice que no está lista para la producción, lo que podría ser un problema, depende de cuándo se actualizó por última vez, ya que la última confirmación fue este mes.
*EDITAR
¡OLVIDÉ COMPLETAMENTE DE ESTOS!
Browscap
Bloque Browscap
Browscap depende de la configuración de su servidor, pero si puede usarlo, entonces el segundo módulo le brinda configuraciones de visibilidad adicionales para cada bloque en la página de edición de bloques.
fuente
puede usar un soporte de jQuery cross browser para obtener la resolución de pantalla:
Agregue un script PHP simple para mostrar la configuración del bloque relacionado.
fuente
Podría usar Mobile Detect Block, pero actualmente estoy buscando una solución que funcione con el ancho de la ventana y
AdaptiveTheme
las consultas de medios del módulo Breakpoints para no duplicar ese código y pesar la descarga del usuario final más de lo que es. También tuve resultados mixtos con Mobile Detect que no se detectó en un dispositivo con el que lo probé, lo que lo hace bastante inútil como Browscap si no puede proporcionar resultados confiables.Algunas discusiones tienen a algunas personas que desean alejarse de Browscap por una razón u otra, de ahí el cambio a Mobile Detect .
fuente