Ich möchte diese Funktionalität zum Widget für die automatische Vervollständigung im Feld "Entityreference" hinzufügen, um die Knoten-ID neben den Titeln in der Dropdown-Liste anzuzeigen. Der Grund für die Idee besteht darin, zwischen mehreren Knoten mit demselben Titel zu unterscheiden.
Beispiel:
- Dies ist ein Titel (3)
- Dies ist ein Titel (2)
- Dies ist ein Titel (1)
Ich weiß, dass die Knoten-ID angezeigt wird, sobald eine Auswahl getroffen wurde, aber ich möchte sie in der Dropdown-Liste anzeigen, um anhand der Knoten-ID schnell den richtigen Knoten auszuwählen.
Antworten:
Installieren Sie die Module Ansichten und Entitätsreferenz , erstellen Sie eine neue Ansicht und fügen Sie eine Entitätsreferenzanzeige hinzu:
Fügen Sie dann in den Feldern den Inhaltstitel und die NID hinzu, klicken Sie in die NID und aktivieren Sie Ausschluss von der Anzeige, Speichern und klicken Sie in den Titel und gehen Sie, um die Ausgabe des Titels als neu zu schreiben
[title] - ([nid])
Bearbeiten Sie die Einstellungen des Formats und überprüfen Sie den Titel. Auf diese Weise können Sie nach Titel suchen.
Speichern Sie die Ansicht.
Gehen Sie zum Bearbeiten Ihres Entitätsreferenzfelds und wählen Sie in den Modusansichten: .... (wie im folgenden Bild) und wählen Sie Ihre Ansicht aus (in diesem Fall lautet der Name: articles_with_id) und speichern Sie die Einstellungen:
Dann gehen Sie, um das Ergebnis zu sehen:
EDIT: Dies funktioniert jetzt in Drupal 8, zumindest in der Version 8.3.4.
quelle
Feld "Entitätsreferenz erstellen" mit der Standardkonfiguration
Die Funktion entityreference_autocomplete_callback_get_matches bestimmt, wie die Ausgabe der automatischen Vervollständigung aussehen soll.
Die letzte Zeile
$matches[$prefix . $key] = '<div class="reference-autocomplete">'
bestimmt die Ausgabe und$entity_id
es steht die ID zur Verfügung. Sie können das tun, was ich in dieser Zeile getan habe (gezeigt durch**
), schreiben Sie einfach:Sie können
$entity_id
andere Felder und alles, was Sie wollen, abrufen.Eine Sache noch!
Manchmal ist es keine gute Idee, die Funktion des Kernmoduls zu ändern (wenn es Ihnen nicht wichtig ist, reicht die obige Lösung aus).
Wenn Sie die Kernfunktion des
entity_reference
Moduls überschreiben müssen , erstellen Sie ein kleines Modul und benennen Sie eselabel
es ist
elabel.info
und es ist
elabel.module
Ich habe diesen Code ausprobiert und er funktioniert einwandfrei. Wenn es andere Arten von Entitätsreferenzen gibt und Sie dies nicht tun müssen, fügen Sie einfach eine
IF
Anweisung hinzu und suchen Sie nach Bundle- oder Inhaltstypen.quelle