1

所以我想要做的是让页脚区域中的所有块都使用相同的模板,比如block--footer-block.html.twig.

我尝试的是用来hook_theme_suggestions_HOOK_alter()检查块的位置并将区域名称添加到模板建议中。

/**
* Implements hook_theme_suggestions_HOOK_alter().
* */
function mytheme_theme_suggestions_block_alter(array &$suggestions, array 
$variables {
    $block = Block::load($variables['elements']);
    $region = $block->getRegion();
    $suggestions[] = 'block . '__' . $region . '__block';
}

目前$block->getRegion();打破了我的网站 - 不知道为什么。它甚至没有给出任何错误,该站点只是空白。

这甚至是这样做的好方法吗?

4

2 回答 2

2

这在这里得到了回答: https ://drupal.stackexchange.com/questions/192616/how-to-make-a-theme-hook-suggestion-for-blocks-according-to-region

function mytheme_theme_suggestions_block_alter(array &$suggestions, array $variables) {
  $block = Block::load($variables['elements']['#id']);
  $region = $block->getRegion();
  $suggestions[] = 'block__'.$region.'__block'; 
}
于 2017-09-15T15:25:05.037 回答
0

您也可以在您的hook_theme_suggestions_HOOK_alter:

if (isset($variables['elements']['#configuration']['region'])) {
    $region = $variables['elements']['#configuration']['region'];
    $suggestions[] = 'block__' . $region;
    if (isset($variables['elements']['#configuration']['provider'])) {
      $provider = $variables['elements']['#configuration']['provider'];
      $suggestions[] = 'block__' . $region . '__' . $provider;
    }
  }

参考

于 2021-01-12T19:03:43.790 回答