Я пытаюсь встроить представление в определенный узел. Я нашел учебники для этого с Drupal 7 и PHP-шаблонами:
<?php print views_embed_view('view_name'); ?>
Но я ищу путь в Drupal 8 с шаблонами веток. Я попытался вызвать views_embed_view()
функцию в hook_node_view()
и назначить ее узлу, чтобы я мог распечатать ее в шаблоне ветки. Но кажется, что этот крюк никогда не вызывается.
Любые советы / решения, как это сделать в Drupal 8 способом?
Вот как это работает для меня в подтеме Drupal 8 beta 12 Classy.
В файле your_theme.info.theme
Я скопировал node.html.twig и окружил теги статьи (или область, которую вы хотите заменить) блоком веток. Я поместил это в папку / template / content.
Затем я создал узел - 2.html.twig (замените 2 нужным узлом) в папке / template / content со следующим кодом.
источник
Первая проблема, с которой вы боретесь, состоит в том, что визуализируемые сущности, такие как узлы, теперь кэшируются по умолчанию, поэтому hook_node_view () вызывается только один раз после очистки / сохранения этого кеша.
Однако это довольно легко отключить, см. Settings.local.php.
Затем поместить вывод представления в $ build довольно просто и более или менее работает как в 7.x. Вместо использования функции встраивания рассмотрите возможность использования $ views = Views :: getView () и затем $ views-> buildRenderable ()
Два совета:
источник
settings.local.php
и очистил все кеши. Но мой хукthemename_node_view()
по-themename.theme
прежнему не вызывается. Ты хоть представляешь, почему это может быть так?Поскольку Бердир ссылался на View-> buildRenderable, это то, что вы ищете, но чтобы дать больше контекста в модуле, вам нужно сделать следующее.
Затем в шаблоне вашей страницы вы можете получить к нему доступ с помощью
источник
В пределах представлений вы можете создать блок с вашими соответствующими данными.
После создания блока вы можете назначить блок для отображения в нужной области содержимого (нижний колонтитул / заголовок / содержимое / и т. Д.). Назначьте его и нажмите «настроить». Вы должны быть в состоянии «Показать блок на определенных страницах». Выбор «Только перечисленные страницы» и добавление / node / your-node-number к спецификации страницы должно ограничить это представление / блок отображением только с желаемым узлом.
Ура!
источник
views_embed_view()
подход намного проще и чище, я думаю.Я знаю, что вы упомянули, что хотели бы использовать шаблоны веточек, но вы могли бы использовать модуль « Справочное поле видов », чтобы не копаться в шаблонах. Также дает преимущество возможности добавлять его к любому настраиваемому объекту, чтобы редакторы содержимого могли настраивать представление / вывод.
источник