Me gustaría agregar esta funcionalidad al widget de autocompletar en el campo de referencia de entidad para mostrar la ID del nodo junto a los títulos en la lista desplegable. La razón detrás de la idea es diferenciar entre múltiples nodos con el mismo título.
Ejemplo:
- Este es un título (3)
- Este es un título (2)
- Este es un título (1)
Sé que la ID del nodo se muestra una vez que se realiza una selección, pero me gusta mostrarla en la lista desplegable para elegir el nodo correcto rápidamente en función de la ID del nodo.
Respuestas:
Instale las vistas y los módulos de referencia de entidad , cree una nueva vista y agregue una pantalla de referencia de entidad:
Luego agregue en los campos el título del contenido y el nid, haga clic en el nid y marque Excluir de la pantalla, Guardar y haga clic en el título y vaya a reescribir la salida del título como
[title] - ([nid])
Vaya a editar la configuración del formato y verifique el título, esto le permitirá buscar por título.
Guarda la vista.
Vaya a editar su campo de Referencia de entidad y seleccione en las Vistas de modo: .... (como la siguiente imagen) y seleccione su Vista (en este caso el nombre es: articles_with_id) y guarde la configuración:
Luego ve a ver el resultado:
EDITAR: Esto ahora funciona en Drupal 8, al menos en la versión 8.3.4.
fuente
Crear campo de referencia de entidad con la configuración predeterminada
La función entityreference_autocomplete_callback_get_matches determina cuál debería ser la salida del autocompletado.
la última línea
$matches[$prefix . $key] = '<div class="reference-autocomplete">'
determina la salida y$entity_id
está disponible cuál es la ID. Puedes hacer lo que hice en esa línea (mostrada por**
), simplemente escribe:puede usar
$entity_id
para buscar otros campos y cualquier cosa que desee.¡Una cosa más!
Algunas veces no es una buena idea cambiar la función del módulo central (si no es importante para usted, la solución anterior es suficiente).
Si necesita anular la función principal del
entity_reference
módulo, cree un módulo pequeño y asígnele un nombreelabel
es
elabel.info
y es
elabel.module
Probé este código y funciona perfectamente. Si hay otro tipo de referencias de entidad y no necesita hacer esto por ellas, simplemente agregue una
IF
declaración y verifique el paquete o el tipo de contenido.fuente