Existe uma maneira de definir a visibilidade do bloco programaticamente sem usar o módulo Filtro PHP?

11

Ao ativar o módulo principal do Filtro PHP, posso usar o código PHP para definir a visibilidade de um bloco na página de configuração do bloco.

Mas não quero habilitar o módulo de filtro PHP para medida de segurança. Então, existe uma maneira de fazê-lo no módulo personalizado ? Não consigo encontrar um gancho para fazê-lo. E um gancho próximo hook_block_view_altersó pode alterar o conteúdo do bloco.

Gilzero
fonte

Respostas:

13

Sim. Definir o conteúdo dos blocos como false ocultará a exibição e ocultará a região se não houver outros blocos presentes. Eu imagino que você precisaria de uma configuração semelhante à seguinte:

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

...

function _my_module_custom_block(){
    if( HIDE_CONDITION )
        return false;
}
Sam152
fonte
2
ainda não mostraria um bloco com conteúdo vazio?
gilzero
1
funciona bem. valeu.
gilzero
@ Gilzero, não, não.
WM
1

O módulo de visibilidade do bloco Rules é outra alternativa disponível ... que não requer que o filtro PHP esteja ativado . Aqui está uma citação de sua página do projeto:

O módulo de visibilidade do bloco Rules permite que os componentes Rules sejam usados ​​para controlar a visibilidade do bloco. Isso fornece aos administradores e desenvolvedores do Drupal extrema flexibilidade no controle de quando os blocos devem ser exibidos em seus sites, além das opções de visibilidade padrão fornecidas pelo Drupal.

A idéia geral é que, se você puder fazer isso com as Regras, poderá usá-lo para controlar a visibilidade do bloco, para que as possibilidades sejam ilimitadas.

Precisa mostrar um bloco apenas para usuários registrados há mais de um mês?

Talvez você tenha um bloco que deve ser exibido apenas entre 8h e 17h nos dias úteis.

Que tal exibir ou ocultar um bloco com base nas condições climáticas atuais?

Tudo isso pode ser feito usando a visibilidade do bloco Regras.

Além disso, conforme a seção " se você pode fazê-lo com regras, pode usá-lo para controlar a visibilidade do bloco " acima, você tem o poder das regras disponíveis para implementar todos os tipos de lógica personalizada (cfr. A parte "programaticamente / módulo personalizado" da sua pergunta).

Para uma ilustração de como usar este módulo, consulte a minha resposta em " Como impedir que um bloco Views seja exibido para administradores, como user / 1? ".

Pierre.Vriens
fonte