Drupal 9 传值至twig模板中
2022-03-23 本文已影响0人
又起风了_
自定义的参数想要传到twig模板中,需要在module或theme中创建相应的preprocess方法,例如:
function MODULE_NAME_preprocess_TEMPLATE(&$var) {
$hello = 'world';//你要传递的值
$var['hello'] = $hello;//twig中使用 {{ hello }}
}
或者
function THEME_NAME_preprocess_TEMPLATE(&$var) {
//TODO
}
注意:TEMPLATE为twig模板名,将所有短线-
修改为下划线_
即可,如:有一个twig模板为 block--views-block--product-sub-nav-block-1.html.twig ,那么TEMPLATE 就应该修改为 block__views_block__product_sub_nav_block_1
传值至page.html.twig
/**
* @param $var
*/
function THEME_NAME_preprocess_page(&$var)
{
$parameters = \Drupal::routeMatch()->getParameters()->all();
if (isset($parameters['taxonomy_term'])) {
$term = $parameters['taxonomy_term'];
if ($term->getVocabularyId() == 'tag') {
$var['is_tag_taxonomy_term_page'] = TRUE;
}
}
}
传值至node.html.twig中
/**
* @param $var
*/
function THEME_NAME_preprocess_node(&$var)
{
$node = \Drupal::routeMatch()->getParameter('node');
$var['id'] = $node->id();
}
传值至region.html.twig中
/**
* @param $var
*/
function THEME_NAME_preprocess_region(&$var)
{
if ($var['region'] == 'content') {
$var['custom_variable'] = 'DEFAULT_VALUE';
}
}
传值至block--views-block--product-sub-nav-block-1.html.twig中
function THEME_NAME_preprocess_block__views_block__product_sub_nav_block_1(&$var)
{
$var['aya'] = 'cilicili';
}