Как я могу встроить представление в содержимое узла?


Как я могу встроить представление в содержимое узла в Drupal 8?

Я нашел нечто подобное, например, в вопросе о " Как встроить представление в узел?" или в модуле Поле просмотра, но это все для Drupal 7.

Я попытался использовать поле ссылки на сущность, указывающее на представление, но оно отображает только метку, и на вкладке "Управление отображением" я могу выбирать только из Метки и Идентификатора сущности. Мне нужно что-то вроде опция "Визуализированная сущность", которая присутствует в полях ссылок на сущности, указывающих на другие узлы.

enter image description here

Author: Community, 2016-04-22

4 answers

Вариант 1

Вы можете создать Блок просмотра . Затем блок просмотра будет доступен в разделе блоки. Назначьте блок просмотра региону и при необходимости покажите его на определенных страницах.

enter image description here

Вариант 2

Создайте файл шаблона ветки для своего узла и используйте

Щипок Веточки

Модуль Twig Tweak предоставляет расширение Twig с некоторыми полезными функциями и фильтрами, которые могут улучшить разработчика опыт.

Бывший: <dd>{{ drupal_view('view_name', 'page_1') }}</dd>

Вариант 3

Если вы используете Панели или Набор дисплеев , вы можете встроить представление в виде поля.

 9
Author: No Sssweat, 2020-06-15 09:13:00

Я помогаю поддерживать ветвь D8 EVA, которая функционально похожа на Twig Tweakdrupal_view(), но работает как отображение представления, которое присоединяется к указанным пакетам сущностей в качестве дополнительного поля. Это означает, что Представление может быть переупорядочено в пользовательском интерфейсе управления отображением сущности или, например, удалено в группу полей . Как и функция Twig Tweak, она позволяет передавать контекстные фильтры в качестве аргументов.

Пример использования для EVA и для решения Twig Tweaks отличается от использования ссылки на сущность с помощью viewsreference, поскольку последняя позволяет редакторам контента выбирать разные представления для каждой сущности. EVA и drupal_view() вводят одно и то же представление для каждой сущности (хотя контекстуальные аргументы могут изменить результаты представления).

Если вы создаете тему на заказ, у EVA может не быть никаких преимуществ по сравнению с внедрением блока twig, но если вы хотите разрешить сайтостроителям управлять представлением, как если бы это было поле сущности, и настраивать, где оно отображается с помощью пользовательского интерфейса, посмотрите.

 4
Author: ahebrank, 2017-03-09 14:45:49

Теперь также существует проект под названием viewsreference, который позволяет встраивать целые представления в узлы с помощью поля (подумайте о ссылке на сущность, но для полных представлений): https://www.drupal.org/project/viewsreference

 3
Author: Narretz, 2016-11-24 11:45:12

Я только что использовал hook_entity_extra_field_info() и views_embed_view() для содержимого дополнительного поля.

**
 * Implements hook_entity_extra_field_info().
 */
function MY_MODULE_entity_extra_field_info() {
  $extra['node']['MY_CONTENT_TYPE'] = [
    'display' => [
      'MY_EXTRA_FIELD_NAME' => [
        'label' => 'My Extra Field',
        'description' => '',
        'weight' => 10,
      ],
    ],
  ];

  return $extra;
}

/**
 * Implements hook_ENTITY_TYPE_view() for node.
 */
function MY_MODULE_node_view(array &$build, NodeInterface $node, EntityViewDisplayInterface $display, $view_mode) {
  if ($node->bundle() === 'MY_CONTENT_TYPE') {
    $build['MY_EXTRA_FIELD_NAME'] = [
      '#type' => 'container',
      'label' => ['#markup' => '<div class="label">My Extra Field:</div>'],
      // At the following line embedding the view, 
      // and giving it an optional contextual filter $node->id()
      'view' => views_embed_view('VIEW_NAME', 'DISPLAY_ID', $node->id()),
    ];
  }
}
 1
Author: Елин Й., 2020-10-08 16:07:58