Je souhaite ajouter cette fonctionnalité au widget de saisie semi-automatique dans le champ Entityreference pour afficher l'ID du nœud à côté des titres dans la liste déroulante. La raison derrière l'idée est de différencier plusieurs nœuds avec le même titre.
Exemple:
- Ceci est un titre (3)
- Ceci est un titre (2)
- Ceci est un titre (1)
Je sais que l'ID de nœud est affiché une fois la sélection effectuée, mais j'aime l'afficher dans la liste déroulante afin de choisir rapidement le bon nœud en fonction de l'ID de nœud.
Réponses:
Installez les modules Vues et Référence d'entité , créez une nouvelle vue et ajoutez un affichage de référence d'entité:
Ensuite, ajoutez dans les champs le titre du contenu et le nid, cliquez dans le nid et cochez Exclure de l'affichage, enregistrez et cliquez dans le titre et allez réécrire la sortie du titre comme
[title] - ([nid])
Allez modifier les paramètres du format et vérifiez le titre, cela vous permettra de rechercher par titre.
Enregistrez la vue.
Allez à modifier votre champ de référence d'entité et sélectionnez dans les vues de mode: .... (comme l'image suivante) et sélectionnez votre vue (dans ce cas, le nom est: articles_with_id) et enregistrez les paramètres:
Allez ensuite voir le résultat:
EDIT: Cela fonctionne maintenant dans Drupal 8, au moins dans la version 8.3.4.
la source
Champ Créer une référence d'entité avec la configuration par défaut
La fonction entityreference_autocomplete_callback_get_matches détermine quelle devrait être la sortie de la saisie semi-automatique.
la dernière ligne
$matches[$prefix . $key] = '<div class="reference-autocomplete">'
détermine la sortie et$entity_id
est disponible qui est l'ID. Vous pouvez faire ce que j'ai fait dans cette ligne (montré par**
), écrivez simplement:vous pouvez utiliser
$entity_id
pour récupérer d'autres champs et tout ce que vous voulez.Encore une chose!
Parfois, ce n'est pas une bonne idée de changer la fonction du module de base (si cela n'est pas important pour vous, la solution ci-dessus est suffisante).
Si vous devez remplacer la fonction principale du
entity_reference
module, créez un petit module et nommez-leelabel
c'est
elabel.info
et c'est
elabel.module
J'ai essayé ce code et il fonctionne parfaitement S'il existe d'autres types de références d'entité et que vous n'avez pas besoin de le faire pour elles, ajoutez simplement une
IF
déclaration et vérifiez le type de bundle ou de contenu.la source