web-dev-qa-db-ja.com

ビュー2条件付きフィルター

条件付きフィルターをビューに適用するにはどうすればよいですか(ビュー2を使用)。

例:[ブログエントリ、フォーラムトピック、ユーザープロファイル]のNode:Typeでフィルターを使用して、いくつかの異なるノードタイプのティーザーを表示するビューがあります。

これは、これらのタイプのすべてのノードを表示するのに適していますが、画像(および他のすべてのタイプ)もある場合にのみ、ユーザーのプロファイルを表示したいとします。

3
cjworden

「フィルター済み(画像が必要)」ビューの表示を複製します。画像フィールドに関係を追加し、それを必須にします。これにより、コンテンツの表示が、画像フィールドが入力されているコンテンツに制限されます。

これで、ヘッダーのリンクを使用して前後にジャンプしたり、別の手段を提供したりできます。

3
Jason Smith

これに使用する方法は、ページコールバックをオーバーライドしてから、ビューを操作するための独自のカスタムコードを提供することです。次に例を示します。

 $ view = views_get_view( 'profile_listing'); 
 //表示名は、機能エクスポートで名前が変更されました。それらは、page_1またはblock_1である可能性が高くなります。
 $ view-> set_display( 'page_profile_listing'); 
 
 if(何らかの条件){
 $ date_filter = array(
 'date_filter' => array(
 'operator' => '> = '、
' value '=> array(
' value '=> NULL、
' min '=> NULL、
' max '=> NULL 、
 'default_date' => 'now -7 days'、
 'default_to_date' => ''、
)、
 'group' => '0 '、
' exposed '=> FALSE、
' expose '=> array(
' operator '=> FALSE、
' label '=>' ' 、
)、
 'date_fields' => array(
 'node_data_field_feature_updated_date.field_feature_updated_date_value' => 'node_data_field_feature_updated_date.field_feature_updated_date_value'、
) 'date_method' => 'OR'、
 '粒度' => '日'、
 'form_type' => 'date_select' 、
 'default_date' => '現在-7日'、
 'default_to_date' => ''、
 'year_range' => '-3:+3'、
 'id' => 'date_filter'、
 'table' => 'node'、
 'field' => 'date_filter'、
 'override' = > array(
 'button' => 'Use default'、
)、
 'relationship' => 'none'、
)、
); 
 
 $ existing_filters = $ view-> display_handler-> get_option( 'filters'); 
 $ view-> display_handler-> override_option( 'filters'、array_merge( $ existing_filters、$ date_filter)); 
} 
 
 return $ view-> execute_display( 'page_profile_listing'); 

この場合、追加する実際のフィルターは無意味です(他の場所からコピー/貼り付けされているだけです)。ビューに追加し、エクスポート関数を使用して、エクスポートコードでその特定のフィルターを見つけることにより、追加する必要のある特定のフィルターを取得できます。

これがすべて理にかなっているといいのですが、必要に応じて詳細についてお気軽にお尋ねください。

2
beeradb

ユーザーIDを引数としてビューに渡し、phpコードバリデーターを設定して、ユーザーに例の画像があるかどうかを確認できます。

1
João Guilherme

他のフィルターを追加して、新しいビューを作成します。

さまざまな条件に基づいてビューを変更する場合は、出力を制限する引数を追加できます。

本当に複雑にしたい場合は、ビューの結果を手動でフィルタリングし、引数に基づいてコンテンツのみを表示するモジュールを作成できます。

1
MikeNGarrett