コンテキスト フィルターは AND ロジックで適用されます。OR ロジックで 2 つ以上のコンテキスト フィルターを使用する方法はありますか?
3 に答える
ビュー 7.x-3.5 では、UI を使用してこれを行うことができない場合があります。
モジュール名がmy_module
my_module.module ファイルに以下を追加します
<?php
function my_moudle_views_api() {
return array(
'api' => 3,
);
}
?>
と
以下を my_module.views.inc に
<?php
function eb_mine_views_query_alter(&$view, &$query) {
if ($view->name == 'statuser') {
dsm($query, 'before');
$query->where[0]['type'] = 'OR';
dsm($query, 'after');
}
}
?>
ソース: http://drupal.org/node/1451218#comment-6136692
ビューの以前のバージョンでは、コンテキスト フィルターの AND/OR オプションは、ビュー内の静的フィルターの最初のグループのオプションによって決定されます。
Grouping of contextual filters
Even though contextual filters do not appear in the "and/or" user interface for sorting and grouping regular filters, contextual filters are always added to the first group of filters. Thus the order of the groups can cause the contextual filter to have entirely different effects on the results of a view that has contextual filters. Even though differences might not be apparent through the user interface.
Multiple contextual filters are therefore always in the same "and/or" group of filters, and can not be placed in different groups. There is an effort to add this feature.
UI オプションのみを使用することを主張する場合は、このモジュールでうまくいきます。テストしましたが、問題が発生する可能性はあるようですが、定期的にメンテナンスされています。カスタム Drupal ディストリビューションにインストールしたとき、何も壊れていないように見えました (ただし、カスタム コードで問題が発生する可能性を排除するために、コードを少し変更しました)。
https://www.drupal.org/project/views_contextual_filters_or
また、このモジュールの動作をさらに分離したい場合は、コード自体を独自のモジュールに簡単にエクスポートできます (特定のビューまたは特定のコンテンツ タイプに適用されるビューにのみ適用されるようにするため)。
これは「引数を通常のフィルター[UI]に渡す」ことを可能にするパッチです https://drupal.org/node/357082