Views Date Filter

Drupal Viewsの日付およびdatetimeフィルターを、日付ピッカーと改善されたユーザー体験を備えた公開フィルターに強化します。

date_filter
5,539 sites
27
drupal.org

インストール

Drupal 11, 10, 9 v1.0.2
composer require 'drupal/date_filter:^1.0'

概要

Views Date Filterモジュールは、Drupal Viewsの日付およびdatetimeフィルターを強化するプラグアンドプレイソリューションです。コアのフィルターを改善されたバージョンにシームレスに置き換え、エンドユーザーに公開する際により使いやすい体験を提供します。

このモジュールは、デフォルトのテキスト入力フィールドを適切なHTML5日付ピッカーに置き換えることで、Viewsにおけるコアの日付フィルタリングの一般的な問題点に対処します。また、between演算子のラベルを改善し(「min」と「max」の代わりに「from」と「to」を使用)、オフセットのデフォルト値を公開フィルターの日付ピッカーで実際の日付に自動的にマッピングします。

このモジュールは、'date'(「作成日」などのタイムスタンプベースのフィールド)と'datetime'(Datetimeフィールドタイプ)の両方のコアViewsフィルタープラグインを変更することで透過的に動作し、設定変更なしで既存のViewsを簡単にアップグレードできます。

Features

  • コアの日付およびdatetime Viewsフィルターを、公開フィルター値選択にHTML5日付ピッカーを使用する強化されたバージョンに置き換えます
  • between/範囲演算子のフィールドラベルを改善し、直感的でない「min」と「max」の代わりに「from」と「to」ラベルを使用します
  • 日付のみモードと日付時刻モードの両方をサポートし、フィルター設定で時刻選択を含めるか除外するかを設定できます
  • オフセットのデフォルト値(「-1 month」や「+1 day」など)を公開フィルターの日付ピッカーで実際の日付に自動的にマッピングし、ユーザーにとってデフォルト値をより直感的にします
  • datetimeフィールドの適切なタイムゾーン処理により、ストレージタイムゾーンとユーザータイムゾーン設定の両方を尊重します
  • コアフィルターで混乱を招いていた廃止された入力タイプ選択(オフセット vs 日付)を削除します
  • すべての標準比較演算子をサポート:等しい、等しくない、より小さい、より大きい、以下、以上、between、not between
  • equals演算子を使用した日付のみのフィルターでは、終日範囲マッチング(00:00:00から23:59:59)を自動的に処理します

Use Cases

日付ピッカー付きの公開日でフィルタリングされたコンテンツ

公開された「作成日」フィルター付きのコンテンツ一覧Viewを作成します。このモジュールを有効にすると、公開フィルターはテキストフィールドの代わりに日付ピッカーを表示し、ユーザーは必要なフォーマットを知らなくても簡単に日付を選択できます。演算子を「より大きい」に設定し、デフォルト値を「-1 month」に設定すると、デフォルトで最近のコンテンツを表示します。

日付範囲フィルター付きのイベント一覧

datetimeフィールドを持つイベント一覧では、「between」演算子でフィルターを追加して公開します。ユーザーには「from」と「to」の日付ピッカーが表示され、直感的な日付範囲選択が可能になります。両方の日付ピッカーは、特定の期間内のイベントを検索するためにシームレスに動作します。

特定の日付からコンテンツを検索

ユーザーが特定の日のすべてのコンテンツを見つけたい場合は、日付フィルターでequals(=)演算子を使用します。モジュールはこれを24時間全体(00:00:00から23:59:59)をカバーするように自動的に拡張するため、ユーザーは時刻を指定する必要がありません。

月/年プリセット付きのアーカイブビュー

デフォルト値として「-1 month」、「-3 months」、または「-1 year」などのオフセット値を使用してアーカイブビューを作成します。モジュールはこれらのオフセットを日付ピッカーで実際の日付に変換するため、ユーザーには暗号のようなオフセットテキストではなく意味のある開始日が表示されます。

タイムゾーン対応のdatetimeフィルタリング

datetimeフィールドがUTCでデータを保存しユーザーのタイムゾーンで表示する国際的なサイトでは、モジュールがタイムゾーン変換を適切に処理します。フィルターはユーザーのタイムゾーン設定に関係なく正しく動作し、正確なクエリのために入力をユーザータイムゾーンからストレージタイムゾーンに変換します。

Tips

  • Viewフィルター設定のフィルタータイプ設定(日付 vs 日付と時刻)により、公開フィルターで日付ピッカーと一緒に時刻ピッカーを表示するかどうかが決まります
  • between演算子を使用する場合、「from」または「to」の値のいずれかを空のままにして、オープンエンドの範囲を作成できます(例:特定の日付「より前のすべてのコンテンツ」または「より後のすべてのコンテンツ」)
  • 「+1 day」、「-2 weeks」、「-1 month」などのオフセット値はデフォルト値として機能し、ユーザーに表示される際に自動的に実際の日付に変換されます
  • フィールド設定で「日付のみ」として設定されたdatetimeフィールドでは、「日付と時刻」フィルタータイプを選択しても時刻ピッカーは自動的に非表示になります
  • モジュールはHTML5ネイティブの日付と時刻入力を使用しており、ブラウザによってレンダリングが異なる場合がありますが、各プラットフォームで最適なユーザー体験を提供します

Technical Details

Hooks 2
hook_views_plugins_filter_alter

Viewsフィルタープラグイン定義を変更し、コアの日付およびdatetimeフィルタークラスをモジュールの改善されたバージョンに置き換えます。

hook_help

モジュールの機能とコアの日付フィルターからの改善点を説明するヘルプテキストを提供します。

Troubleshooting 4
公開フィルターに日付ピッカーが表示されない

View設定でフィルターが適切に公開されていることを確認してください。日付ピッカーは公開フィルターにのみ表示されます。非公開フィルターは「+1 day」などのオフセット値をサポートするためにテキスト入力を引き続き使用します。

タイムゾーンの問題で間違った結果が表示される

datetimeフィールドの場合、/admin/config/regional/settingsでDrupalサイトのタイムゾーン設定が正しいことを確認してください。モジュールは、ユーザー入力とデータベースストレージ(UTC)間の変換時にこれらの設定を尊重します。

モジュールインストール後にフィルターが動作しない

「drush cr」またはパフォーマンスページを使用してすべてのキャッシュをクリアしてください。Viewsは、モジュールがコアフィルターを置き換えた後に更新が必要なフィルタープラグイン情報をキャッシュしている可能性があります。

フィルターで時刻部分が無視される

Viewのフィルター設定を確認してください。「日付と時刻」ではなく「日付」タイプが選択されている場合、時刻は考慮されません。また、フィールド自体が時刻をサポートしていることを確認してください(datetime vs 日付のみのフィールド)。