Вот для того твиг и придумали - чтоб в нем никто не вызывал ничего
Если нужно, то можно и вьюхи, и блоки выводить, но создав под это дело Twig extension или воспользоваться готовым решением https://www.drupal.org/project/twig_tweak (как выводить)
Речь то не про выполнение кода (логики) прямо в шаблоне и исполнение sql запросов в циклах.
views_embed_view - ведь то и делает, что выполняет SQL запрос, и Views - это все про SQL запрос. И все это "работает" из-под рендерющегося шаблона.
Так переменные в шаблон не магическим же способом прилетают, а точно также из БД данные берутся. Я о том, что если нужно что то передать в шаблон, то либо в препроцессе, либо для часто возникающих задач и для динамического вывода нужно создавать Twig extension (функции, фильтры). Или лучше верстальщика заставлять каждый раз в препроцессе создавать переменную и туда записывать отрендеренный вьюс (ведь в препроцессе вьюха магическим образом в обход БД возникает)?
Верстальщик - Twig extension с тем же успехом напишет что и в препроцессор.
Он и не должен - либо программист напишет, либо установить модуль (в своем первом комменте ссылку давал), который создает уже нужные Twig extension-ы под разные задачи.
Комментарии
Вот для того твиг и придумали - чтоб в нем никто не вызывал ничего.
Препроцессоры - все делается в препроцессорах.
Если нужно, то можно и вьюхи, и блоки выводить, но создав под это дело Twig extension или воспользоваться готовым решением https://www.drupal.org/project/twig_tweak (как выводить)
Речь то не про выполнение кода (логики) прямо в шаблоне и исполнение sql запросов в циклах.
Ну как же не про "выполнение кода (логики) прямо в шаблоне и исполнение sql запросов в циклах"?
views_embed_view - ведь то и делает, что выполняет SQL запрос, и Views - это все про SQL запрос. И все это "работает" из-под рендерющегося шаблона.
Формально, 50 на 50 - может выполнить запрос, а может взять результат из кеша.
Но по факту - да, нечего делать вызову вью в шаблоне.
Так переменные в шаблон не магическим же способом прилетают, а точно также из БД данные берутся. Я о том, что если нужно что то передать в шаблон, то либо в препроцессе, либо для часто возникающих задач и для динамического вывода нужно создавать Twig extension (функции, фильтры). Или лучше верстальщика заставлять каждый раз в препроцессе создавать переменную и туда записывать отрендеренный вьюс (ведь в препроцессе вьюха магическим образом в обход БД возникает)?
Конечно же не магически, а так же - из БД. Но не на этапе рендера.
Верстальщик - Twig extension с тем же успехом напишет что и в препроцессор.
Он и не должен - либо программист напишет, либо установить модуль (в своем первом комменте ссылку давал), который создает уже нужные Twig extension-ы под разные задачи.
Лан-лан. Я не против Twig extension.
Мой посыл был про то что твиг помогает делать более "правильную" верстку, препятствуя использованию "неправильных" подходов.
Но и не стоит забывать, что twig дает возможность вызова функций внутри шаблонов (https://twig.symfony.com/doc/2.x/functions/index.html) и друпал добавляет в ядре еще определенный набор (https://www.drupal.org/docs/8/theming/twig/functions-in-twig-templates и некоторые из них, о горе, делают запросы в БД). Но, как в семерке, в twig шаблоне не вызовешь произвольный php код. Вот это и есть правильный подход.