Smart Date
インテリジェントな管理UIを持つ強化された日付範囲フィールドタイプを提供します。終日イベントのサポート、洗練されたフォーマットオプション、最適なパフォーマンスのためのタイムスタンプベースのストレージを備えています。
smart_date
インストール
composer require 'drupal/smart_date:^4.2'
概要
Smart Dateは、コアのdatetime機能をより使いやすいアプローチでアップグレードする包括的なDrupalモジュールです。開始時刻と終了時刻をタイムスタンプとして保存する日付範囲フィールドタイプを提供し、フィルタリングやソート時に優れたパフォーマンスを実現します。
このモジュールは管理インターフェースに継続時間の概念を導入し、フィールドにデフォルトの継続時間(例:1時間)を設定できます。これにより、開始時刻に基づいて終了時刻が自動的に入力されます。この機能により、編集者が慣れ親しんだカレンダーアプリケーションと同様の直感的な時間範囲/イベントデータ入力体験が実現されます。
Smart Dateは「Smart Date Format」という新しい設定エンティティを通じて豊富なフォーマットオプションも提供します。これにより、サイト構築者は日付範囲の出力を非常に細かいレベルで制御できます。開始と終了が同じ日の場合は日付を一度だけ表示するコンパクト表示、区切り文字のカスタマイズ、設定可能なラベルによる終日イベントの処理などのオプションが含まれます。
オプションのサブモジュール(Smart Date Recurring)は、iCalendar RRULE仕様を使用した繰り返しイベントのサポートと、個々のインスタンスを管理するための包括的なUIで機能を拡張します。
Features
- 最大パフォーマンスのために開始/終了時刻をタイムスタンプとして保存するスマート日付範囲フィールドタイプ
- 設定可能なデフォルト継続時間に基づいて終了時刻を自動入力する継続時間ベースの管理UI
- カレンダーアプリケーションと同様のワンクリック切り替えによる終日イベントのサポート
- Smart Date Format設定エンティティによる洗練されたフォーマットオプション
- 冗長な出力を避けるインテリジェントな日付範囲表示(例:開始/終了が同じ日の場合は日付を一度だけ表示)
- AP通信スタイルガイドの推奨に従ったAM/PM省略機能
- 複数のウィジェットオプション:クラシック、インライン範囲、日付のみ範囲、タイムゾーン付きインライン、セレクトリスト
- 複数のフォーマッターオプション:デフォルト、プレーン(ISO 8601)、カスタム、継続時間ベース
- 粒度と日付範囲演算子をサポートする強化された日付フィルターによるViews連携
- Smart DateフィールドのToken連携
- テンプレートで日付をフォーマットするためのTwig拡張
- Smart Dateウィジェットを使用したコアのdaterangeフィールドのサポート
- フィールドレベルと表示レベルの両方でのタイムゾーンオーバーライド機能
- ブラウザでの自動タイムゾーン変換のためのJavaScriptローカライズ
- コアのdatetimeフィールドをSmart Dateフィールドに移行するためのDrushコマンド
- Smart Date値をインポートするためのFeedsモジュール連携
- Smart Dateフィールドのリビジョンを比較するためのDiffモジュール連携
- Full Calendar Viewプロセッサ連携
Use Cases
イベント管理
イベントの開始/終了時刻と継続時間を保存する必要があるイベントコンテンツタイプにSmart Dateを使用します。終日チェックボックスにより終日イベントの作成が簡単になり、継続時間セレクターは標準的な長さのイベント(30分、1時間、2時間)のデータ入力を高速化します。
繰り返しイベント
Smart Date Recurringサブモジュールを有効にして、スケジュールに従って繰り返すイベントを作成します。毎日、毎週、毎月、毎年の繰り返しパターンをサポートし、指定回数後または特定の日付で終了するオプションがあります。個々のインスタンスは、シリーズ全体に影響を与えることなく再スケジュールまたはキャンセルできます。
マルチタイムゾーンイベント
タイムゾーン付きインライン範囲ウィジェットを使用して、コンテンツ編集者が各イベントのタイムゾーンを指定できるようにします。フォーマッターは、保存されたタイムゾーンで時刻を表示し、オプションでユーザーのローカルタイムゾーンでの同等の時刻も表示できます。
日付範囲フィルタリング
強力な日付範囲クエリのために強化されたViews日付フィルターを活用します。特定の日付を含むイベント、日付範囲と重複するイベント、または期間内に開始/終了するイベントをフィルタリングします。粒度オプションにより、年、月、日、時間、分、または秒でのフィルタリングが可能です。
コアの日付フィールドからの移行
付属のDrushコマンドを使用して、既存のdatetimeまたはdaterangeフィールドをSmart Dateに移行します。これにより、既存のデータを保持しながら、Smart Dateの強化されたフォーマットとウィジェットオプションにアクセスできます。
一貫した日付フォーマット
Smart Date Format設定を作成して、サイト全体で一貫した日付表示を確保します。フォーマットは多言語サイト用に翻訳でき、設定可能なオプションがAM/PM省略や日付重複排除などのエッジケースを自動的に処理します。
Tips
- ティーザーやリストなどのスペースが制限された表示には「Compact」フォーマットを使用してください
- JavaScriptローカライズを有効にすると、訪問者のローカルタイムゾーンで時刻を自動的に表示できます
- コアの日付フィールドから移行する場合は、まずステージング環境でDrushコマンドを実行して移行を確認してください
- 一般的なイベントの長さに合わせて継続時間の増分を設定し、コンテンツ入力を高速化してください
- 「出力の重複を減らす」オプションを使用して、APスタイルガイドの推奨に従ったよりクリーンな日付範囲表示を実現してください
- 毎時または毎分の繰り返しイベントには、Daily Rangeフォーマッターがインスタンスを日ごとにグループ化した最適化された出力を提供します
Technical Details
Admin Pages 3
/admin/config/regional/smart-date
Smart Date Format設定エンティティを管理します。サイト全体で日付範囲の表示方法を制御するフォーマット設定の表示、追加、編集、削除を行います。
/admin/config/regional/smart-date/add
カスタムの日付と時刻のフォーマットオプションを持つ新しいSmart Date Format設定エンティティを作成します。
/admin/config/regional/smart-date/{smart_date_format}/configure
既存のSmart Date Format設定を変更します。
権限 1
Hooks 1
hook_smart_date_format_alter
モジュールが出力前にSmart Dateのフォーマットを変更できるようにします。
Drush Commands 1
drush smart_date:migrate
コアのdatetime/daterangeフィールドをSmart Dateフィールドに移行します。ソースフィールドから宛先のSmart Dateフィールドにデータをコピーします。
Troubleshooting 5
Smart Dateフィールドが無制限のカーディナリティで設定されていることを確認してください。繰り返し値は、無制限の値を許可するフィールドでのみ使用できます。フィールド設定で「繰り返し日付値を許可」オプションが有効になっていることを確認してください。
終日イベントは特定のタイムゾーンで保存されます。イベントが間違った日付に表示される場合は、タイムゾーンが正しく保存されているかどうかを確認してください。ウィジェットは終日イベントに対してサイトのタイムゾーンを保存し、一貫した表示を確保します。
フィールドのデフォルト値設定で継続時間の増分が正しく設定されていることを確認してください。フォーマットは1行に1つの値で、オプションでパイプ文字で区切られたラベルを付けることができます(例:'60|1時間')。任意の終了時刻入力を許可するには'custom'を含めてください。
Smart Dateのビューフィルターには粒度オプションがあります。粒度がユースケースに適切に設定されているかどうかを確認してください。日付のみの比較には、「秒」ではなく「日」の粒度を使用してください。
Drushコマンド 'drush smart_date_recur:prune-invalid-rules' を使用して、データベースから無効または孤立した繰り返しルールを削除してください。
Security Notes 2
- 「administer smart date formats」権限は制限されたアクセスとしてマークされており、信頼できる管理者にのみ付与する必要があります
- Smart Date Recurringの権限(make smart dates recur、reschedule instances、cancel instances)は、編集ワークフローに基づいて慎重に割り当てる必要があります