質問

Drupal 6とビュー2を使用しています -

このドキュメントを使用して、私のビュー用のカスタムフィルターを作成しました

http://www.chadcf.com/blog/creating-custom-filters-drupal-and-views.

すべてのものが正常に動作しているように見えます - 1つの問題 -

私のページネーションが機能していません(一部のオペレーターには表示されません)

簡単に達成したいことを説明させてください -

私のページビューでは、オペレーターのドロップダウンを備えた露出したフィルターがすでにいくつかあり、オペレータードロップダウンなしで1つのカスタム露出フィルターを作成しました。

私の要件は、既存のフィルター機能をカスタムフィルターとマージすることです。つまり、2つのフィルターが一緒に動作し、目的の結果を得ることができます。しかし、1つのフィルターは既存のフィールドで構成されており、ドロップダウンから演算子のいずれかを選択すると、値は句に含まれていますが、これは必要ありません。そのため、使用してビュークエリからクエリのチャンクを完全に削除しました

hook_views_pre_execute(&$view) {
        $view->build_info['query'] = preg_replace('/AND \(node_data_field_stock.field_stock_value [<<=>>=!=\\s%d|IS NULL|IS NOT NULL]*\)/','',$view->build_info['query']);
      } 

私のサイト/すべて/モジュール/mymodule/inc/mymodule_filter.incで

function query() {
        $this->query->add_where($this->options['group'], "MY_QUERY");   
}

クエリを表示する場所を追加します。

上記の手順を使用して、デフォルトのビューの動作を正常に拡張し、目的の結果を取得しましたが、一部のオペレーターページネーションリンクでは、データベースにさらに多くのレコードが存在することを知っています。

なぜそれが起こっているのか知っています - 私の見解ページネーションスクリプトが私が行った変更を認識していないからです。

私の質問は、ページャークエリを表示するにはどうすればよいですか?

どんな助けも大歓迎です。

役に立ちましたか?

解決

句からWhere句を表示]を削除するために私がしていたことは、以下にあります。

hook_views_pre_execute(&$view) {
           $view->build_info['query'] = preg_replace('/AND \(node_data_field_stock.field_stock_value [<<=>>=!=\\s%d|IS NULL|IS NOT NULL]*\)/','',$view->build_info['query']);
    } 

しかし、ビューから削除する句を削除する適切な場所は、fook_views_query_alter()です。このチュートリアルを使用します

http://www.drupaler.co.uk/blog/altering-views-query-tackling-node-type-filter-bug/451

    function hook_views_query_alter(&$view, &$query) {
        if($view->name == 'view_name'){
            var_dump($query->where[0]['clauses']);
                 foreach ($query->where[0]['clauses'] as $key=>$value) {
                    if(preg_match('/node_data_field_stock.field_stock_value/',$value)){
                        unset($query->where[0]['clauses'][$key]);
                       // remove the where clause by it's key
                    }
                 }

            var_dump($query->where[0]['clauses']);
        }
    }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top