web-dev-qa-db-ja.com

特定のビューで複数値フィールドの一部をフィルタリングする

無制限の数の値を許可するフィールドを持つエンティティがあります。

ビューで、特定の条件に一致する値のサブセットを表示したいと思います(たとえば、nより小さい数値、過去の日付など)。

調査から、フィールドフォーマッタプラグインはこれを解決する良い方法ではないようです。確かに、DateTimeFormatterBaseを拡張し、:: viewElements(FieldItemListInterface $ items)をオーバーライドして条件を適用できますが、実際のフィールドフォーマッタを選択できるという代償があります。カスタムプラグインもレンダリングを引き継ぐ必要があります。

一方、ビューのフィールドプラグインには、複数の値を制限するためのいくつかの非常に制限されたオプションがあります(オフセットとカウントを選択することで)。ただし、カスタムプラグインでは拡張できないようです。

クエリの実行後、ビューにフックして条件に一致しない値を取り除く必要がありますか、それともプラグインAPIを使用するよりクリーンな方法はありますか?

編集:actualフォーマッターを選択するためのオプションを含むフィールドフォーマッタープラグインを作成し、それに表示する必要のある値を渡すことができると思います。ただし、これは非常に回り道のようです。そして、このロジックは、フィールドタイプごとに再実装する必要があります。

1

各アイテム内のフィールドのフィルタリングと並べ替え順序を最大限に活用するには、views_field_viewモジュールを使用したサブビューが最適なソリューションのようです。

https://drupal.org/project/views_field_view

  1. 目的のフィールドのみを表示するビューを作成します(ページ表示なし)。
  2. 表示するエンティティIDのコンテキストフィルターを追加する
  3. これを親ビューに追加し、コンテキストフィルターを現在のアイテムのエンティティIDに設定します。
0