Я хотел бы добавить эту функцию в виджет автозаполнения в поле Entityreference, чтобы показать идентификатор узла рядом с заголовками в раскрывающемся списке. Причиной этой идеи является различие между несколькими узлами с одинаковым названием.
Пример:
- Это название (3)
- Это название (2)
- Это название (1)
Я знаю, что идентификатор узла отображается после выбора, но мне нравится показывать его в раскрывающемся списке, чтобы быстро выбрать нужный узел на основе идентификатора узла.
Ответы:
Установите модули видов и ссылок на сущности , создайте новый вид и добавьте отображение ссылок на сущности:
Затем добавьте в поля заголовок содержимого и nid, щелкните nid и установите флажок «Исключить из отображения», «Сохранить», щелкните заголовок и перейдите, чтобы перезаписать вывод заголовка как
[title] - ([nid])
Зайдите в настройки формата и проверьте заголовок, это позволит вам искать по заголовку.
Сохранить вид.
Перейдите, чтобы отредактировать поле «Ссылка на сущность» и выберите в представлении «Режим»: .... (как на следующем изображении), выберите ваш вид (в данном случае это имя: article_with_id) и сохраните настройки:
Затем перейдите, чтобы увидеть результат:
РЕДАКТИРОВАТЬ: Это теперь работает в Drupal 8, по крайней мере, в версии 8.3.4.
источник
Создать поле Entity Reference с конфигурацией по умолчанию
Функция entityreference_autocomplete_callback_get_matches определяет, каким должен быть вывод автозаполнения.
последняя строка
$matches[$prefix . $key] = '<div class="reference-autocomplete">'
определяет вывод, и$entity_id
доступен, который является идентификатором. Вы можете сделать то, что я сделал в этой строке (показано**
), просто напишите:Вы можете использовать,
$entity_id
чтобы получить другие поля и все, что вы хотите.Еще кое-что!
Иногда не рекомендуется менять функцию основного модуля (если это не важно для вас, вышеуказанного решения достаточно).
Если вам нужно переопределить основную функцию
entity_reference
модуля, соберите небольшой модуль и назовите егоelabel
это
elabel.info
и это
elabel.module
Я попробовал этот код, и он отлично работает. Если есть другие типы ссылок на сущности, и вам не нужно делать это для них, просто добавьте
IF
оператор и проверьте пакет или тип контента.источник