Je veux ajouter un mode d'affichage pour un type d'entité particulier par programme dans Drupal 8.Je pense que la documentation sur les modes d'affichage pour Drupal 8 n'a pas été fournie comme elle) a été fourni pour Drupal 7 donc je suis confronté à un problème dans la mise en œuvre de ceci. Toute référence du module dans le noyau aiderait.Merci
Que dois-je faire si je veux ajouter des modes d'affichage à de nombreuses entités?
Les modes d'affichage sont des entités de configuration.
Comme tout ce qui est une entité de configuration, c'est très simplement à mettre en "code": faites-en la configuration par défaut. Créez-le dans l'interface utilisateur, effectuez une exportation de configuration (admin/config/development/configuration/single/export
), Puis placez le fichier core.entity_view_mode.$entity_type.$view_mode.yml
Dans config/install
À l'intérieur de votre module.
Le mode d'affichage sera alors automatiquement importé et créé lors de l'installation du module.
Notez qu'il n'est pas codé en dur alors, donc un utilisateur peut le supprimer. Si vous souhaitez empêcher cela, vous pouvez implémenter hook_entity_view_mode_access()
pour refuser à tout le monde l'accès à votre entité.
Par défaut, vous aurez un problème à réinstaller le module car il ne supprimera pas ce mode d'affichage lorsque vous désinstallerez le module et affichera une erreur lorsque vous le réinstallerez. Il existe deux façons de résoudre ce problème:
Comme ça:
dependencies:
enforced:
module:
- yourmodule
Pour créer un mode d'affichage dans Drupal 8 (c'est-à-dire un manage display
Personnalisé)), cela peut maintenant être accompli via l'interface utilisateur:
admin/structure/display-modes/view
Ou si vous souhaitez fournir par programme un mode Affichage avec votre module, procédez comme suit:
config/install
Dans votre moduleconfig/install
, Créez un fichier appelé core.entity_view_mode.node.my_module.yml
Puis à l'intérieur de core.entity_view_mode.node.my_module.yml
Ajoutez ceci:
langcode: en
status: true
dependencies:
module:
- node
- my_module
id: node.my_module
label: 'My Module'
targetEntityType: node
cache: true
Installez ensuite votre module (vous devrez désinstaller puis réinstaller votre module s'il est déjà installé). Vous aurez maintenant un mode d'affichage personnalisé qui peut être activé pour tous vos types de contenu.
Pour prendre en charge d'autres types d'entités (par exemple, commentaire, utilisateur), créez simplement un nouveau fichier .yml
Et remplacez les occurrences de node
par le type d'entité souhaité.
$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();