Добавить пользовательский класс в области заголовка на drupal 8 - PullRequest
0 голосов
/ 24 мая 2018

Я хотел бы добавить пользовательский класс в свой шаблон drupal, в области заголовка, но он не работает.

<!-- 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.

Любой может помочь мне

1 Ответ

0 голосов
/ 24 мая 2018

У вас уже есть все, что вам нужно в выводе.

Многие дороги ведут в Рим

Если themes/marineat является вашей базовой темой, просто скопируйте themes/marinenat/templates/layout/region--header.html.twig в themes/MYSUBTHEME/templates вашей подтемы.каталог и отредактируйте этот файл.Очистить кеш.Готово.

Если themes/marinenat - это пользовательская подтема, просто отредактируйте предложенный файл шаблона /themes/marinenat/templates/layout/region--header.html.twig/ и добавьте туда свой класс.Очистить кеш.Готово.

Наконец, но не в последнюю очередь, вы также можете добавить классы в регион из функции предварительной обработки из вашего файла MYSUBTHEME.theme или из любого файла MYMODULE.module.

/**
 * 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 %}
...