如何在 Drupal 11 中为特定区域创建自定义块模板?

问题描述 投票:0回答:1

我正在使用 Drupal 11,并且我的主页上有一个名为“frontrow1”的区域,其中包含多个块。我创建了 Bootstrap 5 的子主题。

在 Drupal 7 中,我能够使用

block--frontrow1.tpl.php
为该区域中的块创建模板,但我似乎无法使用
block--frontrow1.html.twig
在 Drupal 11 中创建类似的模板。

我尝试通过在

hook_preprocess_block()
中添加区域参数来检查 block.html.twig 中的区域,但我没有成功让它工作。

/**
Implements hook_preprocess_block().
*/
function YOURTHEME_preprocess_block(array &$variables) {
//Check if the block is inside a region on the page.
if (isset($variables['elements']['#configuration']['region'])) {
     $variables['region'] = $variables['elements']['#configuration']['region'];
else {
     $variables['region'] = NULL;
   }
}

尽管如此,我仍然无法在模板中正确获取块区域信息。

{{ region }} //outputs NULL

如何为“frontrow1”区域中的块创建自定义布局?任何关于在 Drupal 11 中模板化此案例的正确方法的指导将不胜感激!

drupal drupal-theming drupal-templates
1个回答
0
投票

我能够使用不同的方法将区域变量添加到我的块中。所以我现在可以在

block.html.twig
中处理它。这对我来说是一个解决方案。但我仍然很好奇是否有办法在模板的命名空间中使用区域。

function YOURTHEME_preprocess_block(&$variables) {
    if (isset($variables["elements"]["#id"])) {
        $block_id = $variables["elements"]["#id"];
        $block = \Drupal\block\Entity\Block::load($block_id);

        if ($block) {
            $variables["region"] = $block->getRegion();
        }
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.