我需要在page.html.twig模板中呈现一个views块。在D7中,我会这样做:
<?php
$block = module_invoke('module_name', 'block_view', 'block_delta');
print render($block['content']);
?>
在Drupal 8中,不建议使用module_invoke,建议使用它:(我已经添加了块的名称作为第二个参数)
Drupal::moduleHandler()->invoke($block, 'views_block__blog_block_1', $args = array());
我尝试了几件事。首先尝试在树枝模板中执行此操作,但我不知道如何在树枝模板中调用php函数,因此结果并不太好。
然后,我在.theme文件的preprocess_page()函数中调用了该函数,但是在使它起作用之前,我尝试了一些简单的方法,只是试图使在twig模板中起作用的变量也不起作用,例如:
在.theme文件的template_preprocess_page(&$ vars)函数中:
$test = 'Hello World';
$vars['$my_var'] = $test;
我试图在树枝模板中调用my_var,但是它不起作用,并且收到一条错误消息,提示“该站点有错误,请与管理员联系”。
因此,总而言之,这是我的问题:
- 如何使变量在树枝模板中可用?
- 如何在树枝模板内调用函数?
- 是否在.theme文件或树枝模板内渲染块?