Чтобы вывести представление (View) в содержимом страницы сайта, работающего на Drupal, обычно советуют использовать модуль Twig Tweak, позволяющий создавать и размещать в Twig-шаблоне конструкции типа {{ drupal_view('who_s_new', 'block_1') }}.
Другой вариант — установить модуль Viewfield, который позволяет добавить типу материала новое поле для вывода View, и в этом поле рендерить нужное представление.
Недостаток обоих вариантов — навязанная необходимость устанавливать дополнительный модуль для решения несложной задачи.
Некоторые чудаки предлагают совсем уж неуклюжие костыли: вывести Views в блок, а потом этот блок разместить в соответствующем месте на нужных страницах. Пусть эта странная (хотя и остроумная) идея останется на их совести.
Между тем задачу можно решить очень просто, за несколько минут и без использования дополнительных модулей: средствами самого Drupal (на момент написания этой заметки актуален Drupal 11).
Для этого существует функция views_embed_view. В ее описании так и говорится: «This function is meant to be called from PHP snippets, should one wish to embed a view in a node or something. It's meant to provide the simplest solution».
Чтобы вызывать эту функцию для отображения конкретного представления, следует в файл темы (ИМЯТЕМЫ.theme) добавить такой код:
function ИМЯТЕМЫ_preprocess(&$variables, $hook) { $variables['ИМЯПЕРЕМЕННОЙ'] = views_embed_view('ИМЯПРЕДСТАВЛЕНИЯ', 'ИМЯОТОБРАЖЕНИЯ');}
В этом коде нужно заменить ИМЯПЕРЕМЕННОЙ на произвольное уникальное слово, которое станет именем переменной, ИМЯПРЕДСТАВЛЕНИЯ — на машинное имя представления, а ИМЯОТОБРАЖЕНИЯ — на машинное имя желаемого отображения этого представления (например, block_1).
А затем в нужном файле шаблона этой темы (например, node.html.twig), в том месте контента, куда хотим внедрить наше представление, размещаем такую строку:
{{ ИМЯПЕРЕМЕННОЙ }}
где ИМЯПЕРЕМЕННОЙ — слово, определённое ранее в функции.
Если требуется вывести View между полями материала, например, перед полем Body, то это реализуется в файле шаблона стандартными средствами Twig:
{{ content|without('body') }}{{ ИМЯПЕРЕМЕННОЙ }}{{ content.body }}
После чего останется только очистить кэш Drupal и получить результат.
Например, на моем сайте представление «См. также» со списком «похожих» публикаций внедрено именно таким способом в контент между полями «Теги» и «Комментарии» (по состоянию на 15 февраля 2026 года).
Добавить комментарий