我要在树枝模板上为特定的内容模板提供一系列变量。
在MYTHEME.theme
我有:
function MYTHEME_preprocess_node(&$variables) {
if (isset($variables['node'])) {
$mycustomblock = \Drupal::service('plugin.manager.block')
->createInstance('myblock', []);
$variables['mycustomblock'] = $mycustomblock->build();
$headertext = \Drupal::service('plugin.manager.block')
->createInstance('headertext',
[
'text-align-submit' => 'right',
'uppercase-submit' => TRUE,
'header_size' => 'h4',
'header-size-submit' => 'h4',
'grid-size-submit' => 6,
'header-title' => 'This is a test',
]
);
$variables['headertext'] = $headertext->build();
}
}
这使我可以在{{ headertext }}
和{{ mycustomblock }}
类型的模板中使用node--contenttype1.html.twig
和node--contenttype2.html.twig
。但是,当我只需要一种内容类型的每个节点类型时,我宁愿不为每种节点类型构建'headertext'
and 'mycustomblock'
变量。最好有一个switch或if语句在生成带有块的变量之前检查它是哪种内容类型。
有没有一种方法可以检查节点的内容类型?
我试过了
$type = $variables['node']->type;
但这没有用。