Как установить пользовательский класс в подменю в Drupal 8?

Как установить пользовательский класс в подменю в Drupal 8?

28.02.2019 01:27:43 Просмотров 75 Источник

Я работаю над меню боковой панели в пользовательской теме Drupal 8 . Я пытаюсь настроить class на sidebar__menu--submenu-1,sidebar__menu--submenu-2, sidebar__menu--submenu-3 и так далее в зависимости от подменю уровня.

До сих пор мне удалось добавить classsidebar__menuна первый уровень & sidebar__menu--submenuна уровень всех подменю. Тем не менее, я хочу добавить боковую панель "class" sidebar__menu--submenu-(number of the level), чтобы я мог лучше управлять боковой панелью с помощью CSS .

Вот это мой код меню.формат html.прут:

{{ menus.menu_links(items, attributes, 0) }}

{% macro menu_links(items, attributes, menu_level, menu_name) %}
  {% import _self as menus %}
  {%
    set menu_classes = [
      'sidebar__menu' ~ menu_name|clean_class,
    ]
  %}
  {%
    set submenu_classes = [
      'sidebar__menu' ~ menu_name|clean_class ~ '--submenu',
    ]
  %}
  {% if items %}
    {% if menu_level == 0 %}
      <ul{{ attributes.addClass('container mx-auto', menu_classes) }}>
    {% else %}
      <ul {{ attributes.removeClass(menu_classes).addClass(submenu_classes) }}>
    {% endif %}

    {% for item in items %}
     {%
      set classes = [
        'sidebar__item',
        item.is_expanded ? 'sidebar__item--expanded',
        item.is_collapsed ? 'sidebar__item--collapsed',
        item.in_active_trail ? 'sidebar__item--active-trail',
      ]
      %}
      <li{{ item.attributes.addClass(classes) }}>
        {{ link(item.title, item.url) }}
        {% if item.below %}
          {{ menus.menu_links(item.below, attributes, menu_level + 1) }}
        {% endif %}
      </li>
    {% endfor %}
    </ul>
  {% endif %}
{% endmacro %}

Любая помощь будет очень признательна!

У вопроса есть решение - Посмотреть?

Ответы - Как установить пользовательский класс в подменю в Drupal 8? / How to set a custom class to submenus in Drupal 8?

Является ответом!
Manuel Abascal

28.02.2019 07:01:15

Я нашел ответ. Сначала мы устанавливаем классы:

{%
set submenu_classes = [
  'sidebar__menu' ~ menu_name|clean_class ~ '--submenu',
  'sidebar__menu--submenu-' ~ (menu_level + 1),
]

%}

Затем используя логику вот так:

{% if menu_level == 0 %}
  <ul{{ attributes.addClass('container mx-auto', menu_classes) }}>
{% else %}
  <ul{{ attributes.removeClass(menu_classes, 'sidebar__menu--submenu-' ~ (menu_level)).addClass(submenu_classes) }}>
{% endif %}
Закрыть X