PHPフィルターモジュールを使用せずにプログラムでブロックの可視性を設定する方法はありますか?


11

コアPHPフィルターモジュールを有効にすることで、PHPコードを使用してブロック構成ページでブロックの可視性を設定できます。

しかし、セキュリティ対策のためにPHPフィルターモジュールを有効にしたくありません。それで、カスタムモジュールでそれを行う方法はありますか?フックが見つかりません。また、クローズフックhook_block_view_alterはブロックの内容のみを変更できます。

回答:


13

はい。ブロックのコンテンツをfalseに設定すると、表示から非表示になり、他にブロックが存在しない場合は領域が非表示になります。次のような設定が必要になると思います。

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

...

function _my_module_custom_block(){
    if( HIDE_CONDITION )
        return false;
}

2
それでも空の内容のブロックは表示されませんか?
ギルゼロ

1
よく働く。THX。
ギルゼロ

@gilzero、いいえ、そうではありません。
WM

1

ルールブロックの可視性のモジュールは、使用可能な別の代替...で有効にするPHPフィルタを必要としません。ここにそのプロジェクトページからの引用があります:

ルールブロックの可視性モジュールを使用すると、ルールコンポーネントを使用してブロックの可視性を制御できます。これにより、Drupalの管理者および開発者は、Drupalが提供するデフォルトの可視性オプションに加えて、Webサイトにブロックを表示するタイミングを柔軟に制御できます。

一般的な考え方は、ルールで実行できる場合、それを使用してブロックの可視性を制御できるため、可能性は無限です。

1か月以上前に登録されたユーザーに対してのみブロックを表示する必要がありますか?

おそらく、平日の午前8時から午後5時の間にのみ表示する必要があるブロックがあるでしょうか。

現在の気象条件に基づいてブロックを表示または非表示にするのはどうですか?

これらすべては、Rulesブロックの可視性を使用して実行できます。

さらに、上記の「ルールで実行できる場合は、それを使用してブロックの可視性を制御できます」のように、あらゆる種類のカスタムロジックを実装するためのルールの能力を利用できます(「プログラム/カスタムモジュール」の部分を参照)あなたの質問の)。

このモジュールの使用方法の図については、「Viewsブロックが管理者(user / 1など)に表示されないようにする方法」に対する私の回答を参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.