条件付きフィルターをビューに適用するにはどうすればよいですか(ビュー2を使用)。
例:[ブログエントリ、フォーラムトピック、ユーザープロファイル]のNode:Typeでフィルターを使用して、いくつかの異なるノードタイプのティーザーを表示するビューがあります。
これは、これらのタイプのすべてのノードを表示するのに適していますが、画像(および他のすべてのタイプ)もある場合にのみ、ユーザーのプロファイルを表示したいとします。
「フィルター済み(画像が必要)」ビューの表示を複製します。画像フィールドに関係を追加し、それを必須にします。これにより、コンテンツの表示が、画像フィールドが入力されているコンテンツに制限されます。
これで、ヘッダーのリンクを使用して前後にジャンプしたり、別の手段を提供したりできます。
これに使用する方法は、ページコールバックをオーバーライドしてから、ビューを操作するための独自のカスタムコードを提供することです。次に例を示します。
$ 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');
この場合、追加する実際のフィルターは無意味です(他の場所からコピー/貼り付けされているだけです)。ビューに追加し、エクスポート関数を使用して、エクスポートコードでその特定のフィルターを見つけることにより、追加する必要のある特定のフィルターを取得できます。
これがすべて理にかなっているといいのですが、必要に応じて詳細についてお気軽にお尋ねください。
ユーザーIDを引数としてビューに渡し、phpコードバリデーターを設定して、ユーザーに例の画像があるかどうかを確認できます。
他のフィルターを追加して、新しいビューを作成します。
さまざまな条件に基づいてビューを変更する場合は、出力を制限する引数を追加できます。
本当に複雑にしたい場合は、ビューの結果を手動でフィルタリングし、引数に基づいてコンテンツのみを表示するモジュールを作成できます。