ビューのフィルター値でトークンを使用できるようにするソリューションを探しています。たとえば、テキストフィールド「my_custom_text」がある場合、ハードコードされた文字列の代わりに「等しい」演算子とトークン値を使用できるようにするフィルターが必要です。
ORする必要があるフィルターが少ないため、コンテキストフィルターを使用できないことに注意してください。
そのためのモジュールはありますか、それとも自分でゼロからコーディングする必要がありますか?
だから、これが最終的に私が思いついたものです。
global php filter
は、DBから既にロードされている結果を制限するだけなので、使用したくありませんでした。私の場合、これは2行を表示するためだけに1000行をロードすることを意味します。賢明すぎるとは思いません。hook_views_query_alter
を使用したくありませんでした。これは、誰かがビューを変更または作成するたびにコードを詳しく調べなければならないことを意味するためです。最終的に、既存のビューハンドラの1つを拡張する独自のビューハンドラを作成しました。また、デフォルトではなくhook_field_views_data_alter
を使用してハンドラーをフックしました。
このソリューションはかなりうまくいきます。カスタムハンドラーは非常に堅牢なソリューションであり、実装は非常に簡単です。方法がわかったら、;)
フィルター基準の代わりにコンテキストフィルターを使用します。
Drupal 8では、これを書いている時点で、 views_argument_token モジュールもインストールする必要があります。
コンテキストフィルターを追加するときは、ポップアップウィンドウで[デフォルト値を指定]オプションを選択します。そこから、残りの設定は直感的であるはずです。
hook_views_query_alter
を使用して作業を行うことができます。
このフックをカスタムモジュールに実装し、ifステートメントでビュー名と編集ビュークエリに制限します。