web-dev-qa-db-fra.com

Comment ajouter un mode d'affichage pour le type d'entité?

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?

7
user2750995

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:

  • Déplacez la configuration vers config/facultatif au lieu de config/install. Ensuite, il ne sera créé que s'il n'existe pas encore.
  • Ajoutez une dépendance imposée à votre module, ce qui garantira qu'il sera supprimé lors de la désinstallation du module. Notez que cela ne fonctionne que si vous l'aviez en place lors de la première installation du module.

Comme ça:

  dependencies:
    enforced:
      module:
        - yourmodule
13
Berdir

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:

  1. Créer un module personnalisé
  2. Créez un répertoire config/install Dans votre module
  3. À l'intérieur de config/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é.

6
tyler.frankenstein
$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();
0
rgpublic