web-dev-qa-db-ja.com

URLの引数に応じて、ビューのヘッダー領域に条件付きで何かを表示するにはどうすればよいですか?

私のページビューのURLはmy-view /%1 /%2のようになります。最初の引数%1は語彙AまたはBまたはCの用語IDであり、それらはすべて階層分類法です。

%1がどの語彙であるか、またはそれが親用語か子用語かによって、ビューヘッダーグローバルテキスト領域に条件付きで何かを表示するにはどうすればよいですか?

4
user7496

このような古い投稿に答えることが標準的な方法かどうかはわかりませんが、コーディングをしたくない人には別の解決策が役立つかもしれません。ビューAttachmentsを使用して、条件付きでヘッダーを添付できます。これは本番サイトのベストプラクティスではないかもしれませんが、それは別の議論です。この答えは単に可能性を知らせるためです。

個別のヘッダーが必要なボキャブラリーごとに添付ファイル表示を追加し、以下の画像に従ってそれらのプロパティを設定します。メインページまたはマスター(デフォルト)の表示に影響を与えないように、すべての添付ファイルプロパティがオーバーライドされていることに注意してください。

編集:下に表示されている画像はビュー3.x用です。うまくいけば、ビュー2.xにも役立ちます。

添付ファイルを追加: Add Attachment

条件付きで表示するヘッダーごとに添付ファイルを追加します(上記を参照)。

添付ファイルフィルター:


Attachment Filter

上記のフィルターは、添付ファイルによってヘッダーのみが表示され、レコードが表示されないようにします。

コンテキストフィルター(1/2):


Contextual Filter (1/2)

添付ファイルごとにコンテキストフィルターを設定します(上と下を参照)。

コンテキストフィルター(2/2):


Contextual Filter (2/2)

この添付ファイルに使用する用語を設定します(私の例は「用語集」です)。必要なヘッダーのみが表示されるように、Action to take if filter value does not validateが「非表示」に設定されていることを確認してください。

ページに添付:


Attach To Page

添付ファイルは必ず何かに添付してください(ここでは、「ページ」ディスプレイに添付されています)。ヘッダーを設定するには、Global: Text Areaをクリックします。

グローバルに設定:テキスト領域(添付ファイルヘッダー内):


Set Header

Global: Text Area(前の画像)をクリックして、目的のヘッダーを設定します。通知:まだオーバーライドされています。また、添付ファイルのフィルターはすべてのレコードを除外するため、必ずDisplay even if view has no resultを確認してください。

ページ/デフォルトのコンテキストフィルター:


Page/default Contextual Filter

最後に、必要に応じて、メインページ自体(添付ファイルではない)のコンテキストフィルターを設定します。

3
Bear

パネルモジュールを使用することをお勧めします。そこでは、ビューを含むページを作成し、利用可能なコンテキストに基づいてオプションのコンテンツを追加できます。

2
dasjo
  1. 本質的に空白のグローバルヘッダーテキスト領域をビューに追加します。
  2. ビューのhook_views_pre_render()を使用して、url引数を検査し、必要なコンテンツをグローバルヘッダーに挿入します。
  3. 利益。
1
tenken

半分の作業を完了しました。コードが多すぎる場合は、モジュール内に関数を記述し、グローバルテキスト領域で関数を呼び出して引数を渡すのが最善の方法だと思います。

0
Amitav Roy

Views PHP module、add the header as a PHP header。

そこから、条件付きのURLの引数を使用します。

例:パスがmy-view /%1 /%2であり、条件が%1に基づいている場合

if (arg(1) == 'foo'): print 'this'; else: print 'that'; endif;

パスがmy-view /%1 /%2で、状態が%2に基づいている場合

if (arg(2) == 'foo'): print 'this'; else: print 'that'; endif;
0
Aaron Ortega