Czy istnieje sposób programowego ustawienia widoczności bloku bez użycia modułu PHP Filter?

11

Włączając podstawowy moduł PHP Filter, mogę użyć kodu PHP do ustawienia widoczności bloku na stronie konfiguracji bloku.

Ale nie chcę włączać modułu filtru PHP dla bezpieczeństwa. Czy istnieje sposób, aby to zrobić w module niestandardowym ? Nie mogę znaleźć takiego haka. A ścisły hak hook_block_view_altermoże tylko zmienić zawartość bloku.

gilzero
źródło

Odpowiedzi:

13

Tak. Ustawienie wartości bloków na wartość false spowoduje ukrycie jej przed wyświetleniem i ukryje region, jeśli nie ma innych bloków. Wyobrażam sobie, że potrzebujesz konfiguracji podobnej do następującej:

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

...

function _my_module_custom_block(){
    if( HIDE_CONDITION )
        return false;
}
Sam152
źródło
2
czy nadal nie pokazywałby bloku z pustą treścią?
gilzero
1
działa świetnie. dzięki.
gilzero
@ Gilzero, nie, nie zrobiłby tego.
WM
1

Zasady widoczność blok moduł jest inna alternatywa dostępny ... który nie wymaga filtra PHP być włączony . Oto cytat ze strony projektu:

Moduł widoczności bloku reguł umożliwia stosowanie komponentów reguł do kontrolowania widoczności bloku. Zapewnia to administratorom i deweloperom Drupala wyjątkową elastyczność w kontrolowaniu, kiedy bloki powinny być wyświetlane na ich stronach internetowych, oprócz domyślnych opcji widoczności zapewnianych przez Drupal.

Ogólna idea jest taka, że ​​jeśli możesz to zrobić za pomocą Reguł, możesz użyć go do kontrolowania widoczności bloku, więc możliwości są nieograniczone.

Chcesz pokazać blok tylko użytkownikom zarejestrowanym ponad miesiąc temu?

Być może masz blok, który musi być pokazywany tylko między 8:00 a 17:00 w dni powszednie?

Co powiesz na wyświetlanie lub ukrywanie bloku na podstawie aktualnych warunków pogodowych?

Wszystko to można zrobić za pomocą widoczności bloku Reguły.

Co więcej, zgodnie z powyższym „ jeśli możesz to zrobić za pomocą Reguł, możesz użyć go do kontrolowania widoczności bloku ”, masz moc Reguł dostępnych do implementacji wszelkiego rodzaju niestandardowej logiki (por. Część „moduł programowo / niestandardowy” twojego pytania).

Aby zilustrować sposób korzystania z tego modułu, zobacz moją odpowiedź na „ Jak zatrzymać wyświetlanie bloku widoków dla administratorów, takich jak użytkownik / 1? ”.

Pierre.Vriens
źródło