Empty Fields
通常は非表示になる空のフィールドを、設定可能な表示フォーマッター設定を使用して表示するオプションを提供します。
empty_fields
インストール
composer require 'drupal/empty_fields:8.x-1.0'
概要
Empty Fieldsモジュールは、新しい表示フォーマッター設定を追加することで、空のフィールドを表示する方法を提供します。デフォルトでは、Drupalは値のないフィールドを非表示にします。このモジュールを使用すると、フィールドを完全に非表示にする代わりに、フィールドが空の場合に何を表示するかをサイト管理者が設定できます。
このモジュールは、すべてのフィールドフォーマッターにサードパーティ設定を追加することで動作し、各ビューモードの各フィールドに対して「空の値の動作」を選択できます。フィールドが空でハンドラーが設定されている場合、モジュールはフィールドを非表示にする代わりに、指定された代替コンテンツでフィールドをレンダリングします。
このモジュールは、開発者がカスタム空フィールドハンドラーを作成できるプラグインシステムを提供します。標準で、カスタムテキスト(Token対応)と改行なしスペースを表示するハンドラーが含まれています。追加のハンドラーは、プラグインAPIを使用して他のモジュールから追加できます。
Features
- Drupalで通常は非表示になる空のフィールドを表示
- 「表示管理」インターフェースを通じてフィールドごと、ビューモードごとに設定可能
- フィールドが空の場合に完全なToken置換をサポートするカスタムテキストを表示
- フィールドレイアウト構造を維持するために改行なしスペース( )を表示
- 開発者がカスタム空フィールドハンドラーを作成できるプラグインベースのアーキテクチャ
- 欠落または破損したプラグインの自動フォールバック処理
- テーマ設定用に空フィールド出力にCSSクラスを追加(empty-fields、empty-fields__[handler])
- フィールドアクセス権限を尊重 - ユーザーに閲覧権限がある場合のみ空のコンテンツを表示
Use Cases
欠落しているプロフィールフィールドにプレースホルダーテキストを表示
ユーザープロフィールページで、空の経歴フィールドを非表示にする代わりに「未指定」や「情報が提供されていません」と表示します。これにより一貫したレイアウトが維持され、情報が表示エラーではなく意図的に空白のままにされたことを訪問者に知らせます。
改行なしスペースでテーブル風のレイアウトを維持
CSSがコンテンツの存在に依存するグリッドまたはテーブル風のレイアウトでコンテンツを表示する場合、改行なしスペースハンドラーを使用して、空のフィールドでもコンテナがレンダリングされるようにし、レイアウトの崩れを防ぎます。
コンテキストに基づく動的なプレースホルダーコンテンツを表示
Token置換を使用したカスタムテキストハンドラーを使用して、コンテキストを考慮したプレースホルダーコンテンツを表示します。例えば、フィールドが空の場合に「この情報を追加するには[current-user:name]のプロフィールを編集してください」と表示します。
ビューモード間で一貫したフィールド表示
編集レビュー用にフルコンテンツビューモードですべてのフィールドが表示されるようにし、ティーザー表示では空のフィールドを非表示にします。ビューモードごとに異なる空フィールドの動作を設定します。
コンテンツの完全性をデバッグ
コンテンツの移行または入力中に、空の必須フィールドに「空 - 要レビュー」と表示して、編集者が注意が必要なコンテンツを特定できるようにします。
Tips
- カスタムテキストでToken置換を使用して、動的でコンテキストを考慮した空フィールドメッセージを作成
- .empty-fieldsクラスをターゲットにしたカスタムCSSを追加して、空フィールドの表示を値のあるフィールドとは異なるスタイルに設定
- 関連コンテンツの表示や外部サービスの呼び出しなど、複雑なユースケース用にカスタムEmptyFieldプラグインを作成
- 空フィールドの設定はビューモードごとであるため、フル、ティーザー、その他の表示モードで異なる動作を設定可能
- モジュールはフィールドアクセス権限を尊重するため、空のコンテンツはユーザーがフィールドを表示する権限を持っている場合にのみ表示される
Technical Details
Hooks 3
hook_field_formatter_third_party_settings_form
すべてのフィールドフォーマッター設定フォームに「空の値の動作」選択フィールドを追加し、フィールドが空の場合に何を表示するかを設定できるようにします。
hook_field_formatter_settings_summary_alter
設定された空フィールドの動作を含めるためにフォーマッター設定のサマリーを変更します。
hook_entity_display_build_alter
フィールドが空だが空フィールドハンドラーが設定されている場合、空フィールドのコンテンツを挿入するためにEntityの表示ビルドを変更します。
Troubleshooting 4
フィールドのフォーマッター設定で「空の値の動作」が「- デフォルト -」以外に設定されていることを確認してください。また、ユーザーにフィールドを表示する権限があることも確認してください。
設定された空フィールドハンドラープラグインが存在しなくなりました。これは、カスタムハンドラーを提供するモジュールがアンインストールされた場合に発生する可能性があります。「表示管理」でフィールドの空の値の動作を再設定してください。
Tokenモジュールがインストールされて有効になっていることを確認してください。また、表示されているEntityタイプに対して正しいToken構文を使用していることを確認してください。
テーマのCSSが正しいクラスをターゲットにしていることを確認してください。空のフィールドには、フィールドラッパーに「empty-fields」と「empty-fields__[handler]」の両方のクラスがあります。