Представления Drupal 3 - пропущены "НАСТРОЙКИ НЕСКОЛЬКИХ ПОЛЕЙ" в ссылке на сущность
Контекст: тип контента Person имеет ссылку (несколько значений) на тип контента Work, используя ссылку на сущность.
Необходимость: для отображения заголовка каждого узла человека, который ссылается на данную работу, через запятую.
Готово: вид с обратной ссылкой, правые узлы извлекаются. (Просмотров 7.x-3.7)
Проблема: Невозможно отобразить значение, разделенное запятой. Примечание: я обычно делаю это с типом отображения "Простой разделитель", который находится в разделе "Показать все значения в одной строке" в группе полей НАСТРОЙКИ НЕСКОЛЬКИХ ПОЛЕЙ. Однако эта группа полей недоступна в моем контексте.
решаемая
Я нашел модуль Views Merge Rows - работает очень хорошо. Если по какой-то причине он не поддерживает модуль Features, я могу взять часть его кода, чтобы самостоятельно использовать hook_views_pre_render.
4 ответа
Я смог обойти эту проблему с помощью token_formatters. Основные действия (после установки токенов):
- Нет отношения к ссылочной сущности в представлениях (не требуется)
- Добавьте поле ссылки на сущность в представление
- Измените форматер на "токенизированный текст"
- Для "вывода текста" используйте токен (я использую [node:field-name])
- Для "назначения ссылки" используйте токен (я использую [entity:url:path] для относительной ссылки)
- Установите настройку нескольких полей по желанию
Вам нужен собственный формат представлений здесь, потому что вы говорите о всей строке представлений, а не о множестве полей результатов. Вы можете использовать "Неформатированный список" и добавить запятую для добавления с помощью CSS или JS.
Какие отношения вы используете? Можете ли вы экспортировать все виды во внешний редактор и предоставить ссылку?
У меня была очень похожая проблема: "Настройки нескольких полей" не были доступны в конфигурации полей многозначной ссылки на сущность из моего типа контента для Пользователя.
Решил это, удалив ссылку на сущность и вместо этого непосредственно использовав многозначное поле "Идентификатор пользователя" моего типа контента. Область формы "Настройки нескольких полей" теперь была доступна, и я выбрал "Отображать все значения в одной строке", как обычно. Теперь это будет отображать только числовые идентификаторы пользователей, разделенные запятой (не желательно). Но в полевой конфигурации была также настройка "Формат:", которую я установил на "Метка". Вместо этого будут отображаться имена пользователей.
Поэтому, я думаю, создав пользовательский форматер, вы сможете отобразить связанные с ними объекты "Работа" аналогичным образом.
У меня была похожая проблема, когда я использовал отношение "Ссылка на сущность" "Ссылочная сущность" вместо "Ссылочная сущность". (Ссылка была на ребенка, и представление началось на родительском уровне).
Когда вы запускаете системное сообщение Drupal в строке (dsm), оно возвращает все ответы nid соответствующим образом, но в виде разных строк результата, а не как один объект; однако, поскольку поле NID (как и многие другие) не имеет возможности для отображения нескольких результатов, оно получит только первый результат.
Я закончил тем, что должен был сделать Entity Query из PHP-поля Views с NID текущей строки в качестве одного из условий поля. Похоже, это помогло, вместо того, чтобы пытаться загрузить View внутри View с views_field_view.
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node')
->entityCondition('bundle', '[your_content_type]')
->propertyCondition('status', 1)
->fieldCondition('[your_field_machine_name]', '[field_column_to_check]', $row->nid)
->addMetaData('account', user_load(1)); // Run the query as user 1.
$result = $query->execute();