質問: エンティティプロパティのフィールドフォーマッタを実装する方法 カスタムentityをentity apihook_schema()で定義され、entitydefaultmetadatacontrollerを拡張するクラスentitypropertyinfo()でも宣言される特定のプロパティがあります。ここまでは順調ですね。ここで、エンティティを表示するときにこれらのプロパティが表示されるかどうか、およびどのように表示されるかをユーザーがカスタマイズできるようにしたいので、 hook_field_extra_fields() を実装して宣言しました。次に、entityapicontrollerを拡張するコントローラーで、buildcontent()の$ content配列にプロパティを追加しました。概要は here です。これは実際にはかなりうまく機能し、プロパティがレンダリングされ、「ディスプレイの管理」の順序と可視性の設定が尊重されます。ただし、[ディスプレイの管理]に設定を追加してラベルの位置をカスタマイズする方法を理解できないようです(inline/above/hidden)、そしてさらに重要なことに、これらのプロパティのカスタムフォーマッタを指定する方法。手がかりはありますか?
回答: field_ui_display_overview_formのmodules/field_ui/field_ui.admin.incにあるように、ページdisplay settingは$instancesと$extra_fieldsで埋められます。$instances = field_info_instances($entity_type, $bundle); $field_types = field_info_field_types(); $extra_fields = field_info_extra_fields($entity_type, $bundle, 'display'); この関数には、ページを作成する2つのループがあります。foreach ($instances as $name => $instance) { ... } そしてforeach ($extra_fields as $name => $extra_field) { ... } フィールドで反復する最初のループにのみ、labelおよびformatterのオプションがありますプロパティでこの機能が必要な場合(@cliveが言ったように): そのメカニズム全体を自分で実装する必要があります