web-dev-qa-db-ja.com

ビューでフィルター値としてトークンを使用する方法

ビューのフィルター値でトークンを使用できるようにするソリューションを探しています。たとえば、テキストフィールド「my_custom_text」がある場合、ハードコードされた文字列の代わりに「等しい」演算子とトークン値を使用できるようにするフィルターが必要です。

ORする必要があるフィルターが少ないため、コンテキストフィルターを使用できないことに注意してください。

そのためのモジュールはありますか、それとも自分でゼロからコーディングする必要がありますか?

5
SiliconMind

だから、これが最終的に私が思いついたものです。

  1. global php filterは、DBから既にロードされている結果を制限するだけなので、使用したくありませんでした。私の場合、これは2行を表示するためだけに1000行をロードすることを意味します。賢明すぎるとは思いません。
  2. hook_views_query_alterを使用したくありませんでした。これは、誰かがビューを変更または作成するたびにコードを詳しく調べなければならないことを意味するためです。

最終的に、既存のビューハンドラの1つを拡張する独自のビューハンドラを作成しました。また、デフォルトではなくhook_field_views_data_alterを使用してハンドラーをフックしました。

このソリューションはかなりうまくいきます。カスタムハンドラーは非常に堅牢なソリューションであり、実装は非常に簡単です。方法がわかったら、;)

0
SiliconMind

フィルター基準の代わりにコンテキストフィルターを使用します。

Drupal 8では、これを書いている時点で、 views_argument_token モジュールもインストールする必要があります。

コンテキストフィルターを追加するときは、ポップアップウィンドウで[デフォルト値を指定]オプションを選択します。そこから、残りの設定は直感的であるはずです。

1
Francisco Luz

hook_views_query_alterを使用して作業を行うことができます。

このフックをカスタムモジュールに実装し、ifステートメントでビュー名と編集ビュークエリに制限します。

0
Yusef