Есть ли способ установить видимость блока программно без использования модуля PHP Filter?

11

Включив основной модуль PHP Filter, я могу использовать PHP-код, чтобы установить видимость блока на странице конфигурации блока.

Но я не хочу включать модуль фильтра PHP для обеспечения безопасности. Так есть ли способ сделать это в пользовательском модуле ? Я не могу найти крючок для этого. А закрывающий хук hook_block_view_alterможет только изменить содержимое блока.

gilzero
источник

Ответы:

13

Да. Если установить для блоков значение false, он будет скрыт от дисплея и будет скрываться область, если других блоков нет. Я полагаю, вам понадобится установка, подобная следующей:

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

...

function _my_module_custom_block(){
    if( HIDE_CONDITION )
        return false;
}
Sam152
источник
2
не будет ли по-прежнему показывать блок с пустым содержимым?
gilzero
1
прекрасно работает. Спасибо.
gilzero
@gilzero, нет, не будет.
WM
1

Модуль видимости блока правил - это еще одна доступная альтернатива, которая не требует включения фильтра PHP . Вот цитата со страницы проекта:

Модуль видимости блока правил позволяет использовать компоненты правил для контроля видимости блока. Это обеспечивает администраторам и разработчикам Drupal исключительную гибкость в управлении тем, когда блоки должны отображаться на их сайтах, в дополнение к параметрам видимости по умолчанию, предоставляемым Drupal.

Общая идея заключается в том, что если вы можете сделать это с помощью правил, вы можете использовать его для управления видимостью блока, поэтому возможности безграничны.

Нужно показывать блок только пользователям, зарегистрированным более месяца назад?

Возможно, у вас есть блок, который должен показываться только с 8 утра до 5 вечера по будням?

Как насчет отображения или скрытия блока в зависимости от текущих погодных условий?

Все это можно сделать с помощью блока правил видимости.

Более того, согласно « если вы можете сделать это с помощью Правил, вы можете использовать его для управления видимостью блока » выше, у вас есть возможности Правил, доступные для реализации всех видов настраиваемой логики (см. Часть «программно / настраиваемый модуль») вашего вопроса).

Для иллюстрации того, как использовать этот модуль, обратитесь к моему ответу на вопрос « Как запретить отображение блока Views для администраторов, таких как user / 1? ».

Pierre.Vriens
источник