Как вы можете визуализировать поля из ссылки на сущность в шаблонах узлов? [Drupal 8]

9

Для контекста я имею дело с двумя типами контента: article и team_profile. В узлах статьи у нас есть поле ссылки на сущность, тянущее узел team_profile, чтобы служить информацией об авторе.

Я бы просто визуализировал объект с новым режимом отображения, но в нашем дизайне фотография установлена ​​прямо над опубликованной датой и именем, рядом друг с другом: скриншот автора информационного дизайна

В D7 я бы dpm($content)и углубился в информацию об узле, дважды щелкнул и вытащил оставшуюся часть контрольного пути. Я использую kint и могу выплевывать содержание ссылки на сущность до определенного уровня {{ kint(content.field_blog_author[0]['#node']) }}. Следующий уровень, к которому я хочу получить доступ values, но попытка следующего дает мне NULL:

  • content.field_blog_author[0]['#node’][‘values’]
  • content.field_blog_author[0]['#node’]=>values
  • content.field_blog_author[0]['#node’]->values

Я бы в конечном счете , как и для придания этому titleи field_team_imageполей из ссылочного узла ( видел здесь в выходной Kint ). Я не нашел информации об этой документации или поиске. Кто-нибудь поможет мне отклеиться?

alexbea
источник

Ответы:

13

#node там на самом деле текущий узел.

Если вы хотите получить доступ к полям и их значениям, начните с узла, а не с контента, который представляет собой массив визуализации с настроенными полями.

Вы можете получить доступ к эталонному объекту следующим образом {{ node.field_blog_author.entity }}.

Оттуда вы можете снова перейти к полю ссылочной сущности, которую вы хотите отобразить. Вы можете попробовать вызвать метод view, с помощью которого вы будете просматривать его с настройками по умолчанию, вы также можете передать режим просмотра в виде строки или настроек отображения массива (не уверен в точном синтаксисе для этого в twig).

Кроме того, моя стандартная ссылка приведена в http://wizzlern.nl/drupal/drupal-8-entity-cheat-sheet, где представлен отличный обзор сущностей контента, как они структурированы и как получить доступ к значениям. Большая часть этого также относится к ветке.

И наконец, при попытке выяснить, что находится в объекте содержимого, используйте node.toArray (), который дает вам представление массива, очень близкое к тому, как вы можете получить к нему доступ как к объекту. Пока внутренняя структура совсем другая.

Berdir
источник
Спасибо, Бердир. {{ kint(node.field_blog_author.entity) }}действительно выводит хороший массив упомянутого узла, но теперь я не могу идти глубже. {{ kint(node.field_blog_author.entity.title) }}например, разрывает страницу, не загружая ресурсы или что-либо за область заголовка. То же самое nidили для других. Просто для хихиканья попытка включить указанную сущность в содержимое узла {{ node.field_blog_author.entity }}вернула сообщение об ошибке, в котором говорилось, что узел не может быть показан в шаблоне подобным образом.
alexbea
Похоже, это могут быть защищенные значения . Это звучит правильно? Может быть, мне нужно создать режим просмотра только для фотографии, а затем использовать режим отображения «ярлык» для имени.
alexbea
Да, они защищены. Как я уже сказал, используйте toArray (), который также работает на node.field_blog_author.entity.title - это объект поля, если вы хотите значение, вам нужно ... entity.title.value. Обязательно прочитайте ссылочный шпаргалку, она объясняет многие из этих вещей.
Бердир
1
Я ценю помощь. Однако я не очень понимаю, как использовать информацию в шпаргалке. Добавление .valueдействительно работает в этом случае и отвечает на мой оригинальный вопрос.
alexbea
@berdir URL сайта не работает.
Чал