ブロックにパラメーターを渡すにはどうすればよいですか?


8

プログラムでブロックにパラメーターを渡すことは可能ですか?

回答:


7

他の答えによれ、ブロックは「ダム」であり、引数を「渡す」ことができません。ただし、ノードID、現在のユーザーなど、ページのコンテキストから引数を取得できます。

本当に2つの「簡単な」選択肢があります。

  • 独自のブロックを書く:少しのPHPができれば、とても簡単です。モジュールを作成し、hook_block()を実装します。Drupal.orgには多くのがあります。
  • パネルおよび/またはビューモジュールを使用します。パネルを使用すると、あらゆる種類の変数とコンテキストを渡すことができるペインを作成できます。それはあなたのサイトとあなたがブロックしたい場所に依存します。ビューもブロックを作成し、ページのURL、現在のユーザー、さらにはビューのPHPモジュールを介してカスタムコードから引数を受け取ることができます。ビューとパネルは非常にうまく連携します。

1
一般的にパネルでも、テーマがサポートしている場合は、他のすべてのブロックをオフにして、「疑似」ブロックとしてコンテキストを認識する他のコンテンツを表示できます。
マルクス、2011

2

プログラムでブロックAFAIKに何かを渡すことはできません。ブロックを構成可能にすることができます(D7のhook_block_configureを使用)。あるいは、独自のテーマ関数を作成し、それに引数を渡すことができます。何をしようとしているのですか?


2

コンテキストフィルターを構成するには、「デフォルト値を提供する」タイプ=>「phpコード」を選択し、必要な引数を使用します。例:arg(1)を返します。


2

ブロックがビューの表示である特殊な(しかし広範囲に及ぶ)ケースの場合、を使用views_embed_viewして、ビューのコンテキストフィルター経由で(つまり、通常はURLから)取得するパラメーターを使用してブロックをレンダリングできます。

例えば:

print views_embed_view('news', 'panel_pane_1', 'world');

2番目以降のパラメーターは、コンテキストフィルター値としてブロックに渡されます。

出典:CC-BY-SA 3.0のライセンスを取得したDavid Thomasによるこの回答から書き換え

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