gpt4 book ai didi

Drupal 8 - 以编程方式将机器名称添加为类 block

转载 作者:行者123 更新时间:2023-12-02 05:48:59 24 4
gpt4 key购买 nike

我正在寻找一种将类添加到 block 的方法,但不是自定义类,而是来自区域名称或 block 机器名称的类。

例如,对于区域,这是可能的:

    {%
set classes = [ 'region-' ~ region|clean_class]
%}

每个 div 都会将区域名称(在 info.yml 文件中定义)作为一个类。我想用 block 做同样的事情。将区域名称或计算机名称添加为类。我想要一个类的原因是CSS。使用类而不是 ID 来定位元素是更好的做法。

有人知道如何以编程方式实现这一目标吗?

最佳答案

1) Drupal 8.x 上的 Twig 仅理解变量和变量的基本操作。因此,为了使用自定义变量(例如 block 区域),您通常需要在预处理函数传递变量,然后在 Twig 中使用它们。这是一个例子:

function MYTHEME_preprocess_block(&$variables, $hook) {
$block_id = $variables['elements']['#id'];
$block = \Drupal\block\Entity\Block::load($block_id);

// Add region as variable
$variables['region'] = $block->getRegion();
}

然后在block.html.twig文件上:

{%
set classes = ['region-'~region|clean_class]
%}

请参阅文档:https://www.drupal.org/docs/8/theming/twig/twig-best-practices-preprocess-functions-and-templates .

2) 如果您想要自定义 block 模板建议(例如针对某个区域),您可以使用 hook_theme_suggestions_alter() 更改默认主题建议。 .

function MYTHEME_theme_suggestions_block_alter(array &$suggestions, array $variables) {
if ($variables['elements']['#configuration']['region']) {
$suggestions[] = 'block__' . $variables['elements']['#configuration']['region'];
}
}

3) 请注意,您无法使用特定于区域的 Drupal block twig templates默认情况下,因为此功能在 8.x 上被删除。参见相关帖子:https://www.drupal.org/node/2011434 .

关于Drupal 8 - 以编程方式将机器名称添加为类 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39963619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com