在 drupal 8 的页眉区域添加自定义 class
Add custom class in header region on drupal 8
我想在我的 drupal 模板中的页眉区域添加自定义 class,但它不起作用。
<!-- BEGIN OUTPUT from 'themes/marinenat/templates/layout/page.html.twig' -->
<div class="layout-container">
<header role="banner">
<!-- THEME DEBUG -->
<!-- THEME HOOK: 'region' -->
<!-- FILE NAME SUGGESTIONS:
x region--header.html.twig
* region.html.twig
-->
<!-- BEGIN OUTPUT from 'themes/marinenat/templates/layout/region--header.html.twig' -->
<div class="nav">
我想在 "nav" class di region--header.class 之后添加这个 class。
任何人都可以帮助我
您已经在输出中获得了所需的一切。
条条大路通罗马
如果 themes/marineat
是您的基本主题,只需将 themes/marinenat/templates/layout/region--header.html.twig
复制到子主题的 themes/MYSUBTHEME/templates
目录中并编辑此文件。刷新缓存。完成。
如果 themes/marinenat
是您自定义的子主题,只需编辑建议的模板文件 /themes/marinenat/templates/layout/region--header.html.twig/
并在其中添加您的 class。刷新缓存。完成。
最后但同样重要的是,您还可以通过 MYSUBTHEME.theme
文件或任何 MYMODULE.module
文件的预处理函数将 classes 添加到区域。
/**
* Implements template_preprocess_region().
*/
function MYTHEME/MYMODULE_preprocess_region(&$variables) {
if (isset($variables['region']) && $variables['region'] == 'header') {
$variables['attributes']['class'][] = 'MYCLASS';
}
}
如何将字符串从 PHP 传递到 Twig
/**
* Implements template_preprocess_region().
*/
function MYTHEME/MYMODULE_preprocess_region(&$variables) {
$variables['foo'] = FALSE;
if (isset($variables['region']) && $variables['region'] == 'header') {
// Get the current node.
$node = \Drupal::routeMatch()->getParameter('node');
if ($node instanceof \Drupal\node\NodeInterface) {
// Get the node type.
$node_type = $node->bundle();
// Do what ever else you need to do to retrieve your class dynamically.
$variables['foo'] = $node_type;
}
}
}
然后在你的 region--header.html.twig
Twig 文件中是:
{% if foo %}
<div class="nav {{ foo }}">
{{ content }}
</div>
{% endif %}
我想在我的 drupal 模板中的页眉区域添加自定义 class,但它不起作用。
<!-- BEGIN OUTPUT from 'themes/marinenat/templates/layout/page.html.twig' -->
<div class="layout-container">
<header role="banner">
<!-- THEME DEBUG -->
<!-- THEME HOOK: 'region' -->
<!-- FILE NAME SUGGESTIONS:
x region--header.html.twig
* region.html.twig
-->
<!-- BEGIN OUTPUT from 'themes/marinenat/templates/layout/region--header.html.twig' -->
<div class="nav">
我想在 "nav" class di region--header.class 之后添加这个 class。
任何人都可以帮助我
您已经在输出中获得了所需的一切。
条条大路通罗马
如果 themes/marineat
是您的基本主题,只需将 themes/marinenat/templates/layout/region--header.html.twig
复制到子主题的 themes/MYSUBTHEME/templates
目录中并编辑此文件。刷新缓存。完成。
如果 themes/marinenat
是您自定义的子主题,只需编辑建议的模板文件 /themes/marinenat/templates/layout/region--header.html.twig/
并在其中添加您的 class。刷新缓存。完成。
最后但同样重要的是,您还可以通过 MYSUBTHEME.theme
文件或任何 MYMODULE.module
文件的预处理函数将 classes 添加到区域。
/**
* Implements template_preprocess_region().
*/
function MYTHEME/MYMODULE_preprocess_region(&$variables) {
if (isset($variables['region']) && $variables['region'] == 'header') {
$variables['attributes']['class'][] = 'MYCLASS';
}
}
如何将字符串从 PHP 传递到 Twig
/**
* Implements template_preprocess_region().
*/
function MYTHEME/MYMODULE_preprocess_region(&$variables) {
$variables['foo'] = FALSE;
if (isset($variables['region']) && $variables['region'] == 'header') {
// Get the current node.
$node = \Drupal::routeMatch()->getParameter('node');
if ($node instanceof \Drupal\node\NodeInterface) {
// Get the node type.
$node_type = $node->bundle();
// Do what ever else you need to do to retrieve your class dynamically.
$variables['foo'] = $node_type;
}
}
}
然后在你的 region--header.html.twig
Twig 文件中是:
{% if foo %}
<div class="nav {{ foo }}">
{{ content }}
</div>
{% endif %}