Drupal 8.の特定のエンティティタイプのビューモードをプログラムで追加したいDrupal 8のビューモードに関するドキュメントは、このように提供されていないと思いますDrupal 7のために提供されたため、これを実装する際に問題に直面しています。コアのモジュールからの参照は役に立ちます。ありがとう
多くのエンティティにビューモードを追加する場合、何をする必要がありますか?
表示モードは構成エンティティです。
構成エンティティである他のものと同様に、「コード」に入れるのは非常に簡単です。デフォルトの構成にします。それをUIで作成し、構成のエクスポート(_admin/config/development/configuration/single/export
_)を実行してから、_core.entity_view_mode.$entity_type.$view_mode.yml
_ファイルをモジュール内の_config/install
_に配置します。
モジュールがインストールされると、表示モードが自動的にインポートおよび作成されます。
その場合はハードコードされていないため、ユーザーが削除できることに注意してください。それを防止したい場合は、hook_entity_view_mode_access()
を実装して、エンティティへの削除アクセスをすべてのユーザーに対して拒否できます。
デフォルトでは、モジュールを再インストールすると問題が発生します。これは、モジュールをアンインストールしてもその表示モードが削除されず、再度インストールしたときにエラーが表示されるためです。これを修正するには2つの方法があります。
このような:
_ dependencies:
enforced:
module:
- yourmodule
_
Drupal 8(つまり、カスタムmanage display
)でビューモードを作成するには、UIを使用してこれを実行できます。
admin/structure/display-modes/view
または、プログラムで表示モードをモジュールに提供する場合は、次の手順に従います。
config/install
ディレクトリを作成しますconfig/install
内に、core.entity_view_mode.node.my_module.yml
というファイルを作成します次にcore.entity_view_mode.node.my_module.yml
の中にこれを追加します:
langcode: en
status: true
dependencies:
module:
- node
- my_module
id: node.my_module
label: 'My Module'
targetEntityType: node
cache: true
次に、モジュールをインストールします(モジュールが既にインストールされている場合は、モジュールをアンインストールしてから再インストールする必要があります)。これで、すべてのコンテンツタイプで有効にできるカスタムビューモードができました。
他のタイプのエンティティ(コメント、ユーザーなど)をサポートするには、新しい.yml
ファイルを作成し、node
を目的のエンティティタイプに置き換えます。
$entity_type="node"; //The entity for which you want to create the view mode
$view_mode="example"; //The name of the new view mode
$settings=Array();
$settings["id"]=$entity_type.".".$view_mode;
$settings["targetEntityType"]=$entity_type;
$evm=Drupal\Core\Entity\Entity\EntityViewMode::create($settings);
$evm->save();