¿Hay alguna manera de establecer la visibilidad del bloque mediante programación sin usar el módulo de filtro PHP?

11

Al habilitar el módulo de filtro PHP principal, puedo usar el código PHP para establecer la visibilidad de un bloque en la página de configuración del bloque.

Pero no quiero habilitar el módulo de filtro PHP para la medida de seguridad. Entonces, ¿hay alguna manera de hacerlo en un módulo personalizado ? No puedo encontrar un gancho al hacerlo. Y un enlace cercano hook_block_view_altersolo puede cambiar el contenido del bloque.

gilzero
fuente

Respuestas:

13

Si. Establecer el contenido de los bloques en falso lo ocultará de la pantalla y ocultará la región si no hay otros bloques presentes. Me imagino que necesitarías una configuración similar a la siguiente:

$block['content'] = _my_module_custom_block();

...

function _my_module_custom_block(){
    if( HIDE_CONDITION )
        return false;
}
Sam152
fuente
2
¿No mostraría todavía un bloque con contenido vacío?
gilzero
1
Funciona genial. gracias.
gilzero
@ gilzero, no, no lo haría.
WM
1

El módulo de visibilidad del bloque Reglas es otra alternativa disponible ... que no requiere que el filtro PHP esté habilitado . Aquí hay una cita de su página de proyecto:

El módulo de visibilidad del bloque de Reglas permite que los componentes de Reglas se usen para controlar la visibilidad del bloque. Esto proporciona a los administradores y desarrolladores de Drupal una flexibilidad extrema para controlar cuándo deben mostrarse los bloques en sus sitios web, además de las opciones de visibilidad predeterminadas proporcionadas por Drupal.

La idea general es que si puede hacerlo con Reglas, puede usarlo para controlar la visibilidad del bloque, por lo que las posibilidades son ilimitadas.

¿Necesita mostrar un bloqueo solo para usuarios registrados hace más de un mes?

¿Quizás tiene un bloqueo que debe mostrarse solo entre las 8 am y las 5 pm los días de semana?

¿Qué pasa con mostrar u ocultar un bloque en función de las condiciones climáticas actuales?

Todo esto se puede hacer mediante el uso de la visibilidad del bloque de reglas.

Además, según el " si puede hacerlo con Reglas, puede usarlo para controlar la visibilidad del bloque " anterior, tiene el poder de las Reglas disponibles para implementar todo tipo de lógica personalizada (cfr. La parte del "módulo programado / personalizado" de tu pregunta).

Para ver una ilustración de cómo usar este módulo, consulte mi respuesta a " ¿Cómo evitar que se muestre un bloque de Vistas a los administradores, como usuario / 1? ".

Pierre.Vriens
fuente