Drupal

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';
}
上一篇下一篇

猜你喜欢

热点阅读