Views Year Filter

Viewsの日付フィルターに年(CCYY形式)のみでフィルタリングするオプションを追加するモジュール。

views_year_filter
6,677 sites
27
drupal.org
Drupal 9 Drupal 10 Drupal 11

インストール

Drupal 11, 10, 9 v2.1.7
composer require 'drupal/views_year_filter:^2.1'

概要

Views Year Filterモジュールは、DrupalのViewsにおいて日付フィルターの機能を拡張し、完全な日付(CCYY-MM-DD HH:MM:SS形式)や現在時刻からのオフセットではなく、年のみ(CCYY形式)でコンテンツをフィルタリングできるようにします。

このモジュールは、Drupal標準の日付フィルター(date)、日時フィルター(datetime)、およびSearch APIの日付フィルター(search_api_date)を拡張し、「A date in CCYY format」という新しいフィルタータイプオプションを追加します。これにより、ユーザーは「2023」や「2024」のように年を入力するだけで、その年に作成・更新されたコンテンツを簡単に検索できます。

また、オプションでBootstrap Datepickerを有効にすることで、年選択のためのポップアップUIを提供し、ユーザーエクスペリエンスを向上させることができます。date_popupモジュールがインストールされている場合は、HTML5のdate入力タイプとの統合も行われます。

Features

  • Viewsの日付フィルターに年のみ(CCYY形式)でフィルタリングするオプションを追加
  • 標準の日付フィルター(date)、日時フィルター(datetime)、Search API日付フィルター(search_api_date)のすべてに対応
  • created、changed、published_atなどのタイムスタンプ形式のフィールドと、通常の日付形式フィールドの両方をサポート
  • 等号(=)、不等号(!=)、大小比較(<、<=、>、>=)、範囲指定(between)の各演算子をサポート
  • Bootstrap Datepickerによる年選択ポップアップUI(オプション)
  • date_popupモジュールとの統合によるHTML5日付入力対応
  • smart_dateモジュールとの互換性(smart_dateモジュールが年粒度オプションを提供する場合は競合を回避)

Use Cases

年別アーカイブページの作成

ブログやニュースサイトで年別のコンテンツアーカイブページを作成する際に使用します。例えば、「2023年の記事一覧」「2024年の記事一覧」のようなページを、URLパラメータで年を指定してフィルタリングすることで実現できます。Viewsで公開日フィールドを露出フィルターとして設定し、「A date in CCYY format」オプションを選択することで、ユーザーが年を入力または選択してコンテンツを絞り込めるようになります。

イベント検索機能での年指定フィルター

イベント管理サイトで、開催年でイベントを検索する機能を実装する際に使用します。イベントの開催日フィールドに対して年フィルターを適用することで、「2024年のイベント」「2025年のイベント」のように年単位でイベントを検索できます。Bootstrap Datepickerを有効にすれば、ユーザーフレンドリーな年選択UIも提供できます。

Search APIを使用した高度な検索での年フィルター

Search APIとSolrやElasticsearchを使用した検索機能において、年でのフィルタリングを実装する際に使用します。Search APIのインデックスに日付フィールドを追加し、Viewsでsearch_api_dateフィルターとして設定することで、ファセット検索や露出フィルターで年を指定した検索が可能になります。

コンテンツ管理画面での作成年フィルター

管理者向けのコンテンツ一覧画面で、作成日や更新日を年で絞り込む機能を追加する際に使用します。「今年作成されたコンテンツ」「昨年更新されたコンテンツ」などを簡単にフィルタリングでき、大量のコンテンツを管理する際に便利です。createdやchangedフィールド(タイムスタンプ形式)にも対応しています。

年度別レポートの生成

会計年度や学年度に基づいたレポートを生成する際に使用します。特定の年に作成されたデータのみを抽出し、集計やエクスポートを行うViewsを構築できます。between演算子を使用すれば、複数年にまたがる範囲指定も可能です。

Tips

  • 年フィルターを露出フィルターとして設定し、URLパラメータで年を渡すことで、年別アーカイブへの直接リンクを作成できます(例: /news?year=2024)
  • between演算子を使用すると、複数年の範囲でフィルタリングできます(例: 2020年から2024年)
  • Bootstrap Datepickerを有効にすると、ユーザーは年をクリックで選択でき、入力ミスを減らせます
  • Search APIを使用する場合、インデックスの再構築後に年フィルターが正しく機能するようになります

Technical Details

Admin Pages 1
Views year filter settings /admin/config/views-year-filter/settings

Views Year Filterモジュールの設定を行う画面です。Bootstrap Datepickerの使用有無を設定できます。

Hooks 1
hook_views_plugins_filter_alter

Viewsのフィルタープラグイン定義を変更し、標準のdate、datetime、search_api_dateフィルターを本モジュールのカスタムクラスに置き換えます。smart_dateモジュールが有効で年粒度オプションを提供する場合は、dateフィルターの置き換えをスキップします。

Troubleshooting 4
Bootstrap Datepickerの設定を変更しても反映されない

設定変更後はキャッシュのクリアが必要です。管理画面から「環境設定」>「開発」>「パフォーマンス」でキャッシュをクリアするか、Drushで drush cr コマンドを実行してください。

年フィルターオプション(A date in CCYY format)が表示されない

Viewsのフィルター設定画面で、対応する演算子(=、!=、<、<=、>、>=、between)を選択しているか確認してください。regular expressionなどのサポートされていない演算子が選択されている場合、年フィルターオプションは無効化されます。

smart_dateモジュールと併用時に年フィルターが機能しない

smart_dateモジュールが有効で年粒度オプションを提供する場合、Views Year Filterは標準のdateフィルターの拡張をスキップします。smart_dateの年粒度機能を使用するか、smart_dateを無効にしてViews Year Filterを使用してください。

Bootstrap Datepickerのスタイルが崩れる

Bootstrap Datepickerは外部CDNからロードされます。サイトのCSSとの競合が発生している可能性があります。テーマのCSSでスタイルを調整するか、Bootstrap Datepickerを無効にしてプレーンなテキスト入力を使用してください。

Security Notes 2
  • 本モジュールはViewsのフィルター機能を拡張するのみで、独自のパーミッションは追加しません。フィルターの露出設定はViewsの標準的な権限管理に従います。
  • Bootstrap Datepickerは外部CDN(cdnjs.cloudflare.com)からロードされます。セキュリティポリシーによっては、CSP設定の調整が必要な場合があります。