Twig Drupal 8如何为类提供下拉链接?

Twig Drupal 8如何为类提供下拉链接?,twig,drupal-8,Twig,Drupal 8,我试图通过使用细枝模板在Drupal8上构建一个简单的下拉菜单。我的问题是,我找不到一种方法给下拉链接一个类。这是我的密码 {# /** * @file * Theme override to display a menu. */ #} {% import _self as menus %} {{ menus.menu_links(items, attributes, 0, menu_name) }} {# 1. #} {% macro menu_links(items, attribu

我试图通过使用细枝模板在Drupal8上构建一个简单的下拉菜单。我的问题是,我找不到一种方法给下拉链接一个类。这是我的密码

{#
/**
 * @file
 * Theme override to display a menu.
 */
#}
{% import _self as menus %}
{{ menus.menu_links(items, attributes, 0, menu_name) }} {# 1. #}

{% macro menu_links(items, attributes, menu_level, menu_name) %} {# 1. #}
  {% import _self as menus %}
  {# 1. #}
  {%
     set menu_classes = [
       'c-menu-' ~ menu_name|clean_class,
     ]
 %}
  {% if items %}
    {% if menu_level == 0 %}
      <ul{{ attributes.addClass('navbar-nav u-header__navbar-nav') }}>
    {% else %}
      <ul class="hs-sub-menu list-unstyled u-header__sub-menu u-header__sub-menu-offset animated">
    {% endif %}
    {% for item in items %}
      {%
        set classes = [
          menu_level ? 'dropdown-item u-header__sub-menu-list-item' : 'nav-item u-header__nav-item',
          item.is_expanded ? 'menu-item',
          item.is_collapsed ? 'menu-item',
          item.in_active_trail ? 'active',
          item.below ? 'nav-item hs-has-sub-menu u-header__nav-item hs-sub-menu-opened',
        ]
      %}
      <li{{ item.attributes.addClass(classes) }} data-event="hover" data-animation-in="fadeInUp" data-animation-out="fadeOut">
        {%
          set link_classes = [
            not menu_level ? 'nav-link u-header__nav-link',
            item.in_active_trail ? 'active',
            item.below ? 'nav-link u-header__nav-link',
            item.url.getOption('attributes').class ? item.url.getOption('attributes').class | join(' '),
          ]
        %}
        {% if item.below %}
          {{ link(item.title, item.url, {'class': link_classes, 'data-toggle': 'dropdown', 'aria-expanded': 'false', 'aria-haspopup': 'true' }) }}
          {{ menus.menu_links(item.below, attributes, menu_level + 1) }}
        {% else %}
          {{ link(item.title, item.url, {'class': link_classes}) }}
        {% endif %}
      </li>
    {% endfor %}
    </ul>
  {% endif %}
{% endmacro %}
我需要像这样改变它

<a href="/" data-drupal-link-system-path="<front>" class="nav-link u-header__sub-menu-nav-link">Sublink</a>


如果有任何其他方法,如使用自定义模块或挂钩,请让我知道

使用以下代码实现了结果

{#
/**
 * @file
 * Theme override to display a menu.
 */
#}
{% import _self as menus %}
{{ menus.menu_links(items, attributes, 0, menu_name) }} {# 1. #}

{% macro menu_links(items, attributes, menu_level, menu_name) %} {# 1. #}
  {% import _self as menus %}
  {# 1. #}
  {%
     set menu_classes = [
       'c-menu-' ~ menu_name|clean_class,
     ]
 %}
  {% if items %}
    {% if menu_level == 0 %}
      <ul{{ attributes.addClass('navbar-nav u-header__navbar-nav') }}>
    {% else %}
      <ul class="hs-sub-menu list-unstyled u-header__sub-menu u-header__sub-menu-offset animated">
    {% endif %}
    {% for item in items %}
      {%
        set classes = [
          menu_level ? 'dropdown-item u-header__sub-menu-list-item' : 'nav-item u-header__nav-item',
          item.is_expanded ? 'expanded',
          item.is_collapsed ? 'collapsed',
          item.in_active_trail ? 'active',
          item.below ? 'nav-item u-header__nav-item expanded nav-item hs-has-sub-menu u-header__nav-item',
        ]
      %}
      <li{{ item.attributes.addClass(classes) }} data-event="hover" data-animation-in="fadeInUp" data-animation-out="fadeOut">

        {%
        set link_classes = [
        'nav-link',
        not menu_level ? 'u-header__nav-link' : 'u-header__sub-menu-nav-link',
        item.in_active_trail ? 'active',
        item.url.getOption('attributes').class ? item.url.getOption('attributes').class | join(' '),
        ]
        %}
        {% if item.below %}
          {% set title %}
          {{ item.title }}<span class="fa fa-angle-down u-header__nav-link-icon"></span>
          {% endset %}

          {{ link(title, item.url, {'class': link_classes, 'data-toggle': 'dropdown', 'aria-expanded': 'false', 'aria-haspopup': 'true' })}}

          {{ menus.menu_links(item.below, attributes, menu_level + 1) }}
        {% else %}
          {{ link(item.title, item.url, {'class': link_classes}) }}
        {% endif %}
      </li>
    {% endfor %}
    </ul>
  {% endif %}

{% endmacro %}
{#
/**
*@file
*主题替代以显示菜单。
*/
#}
{%import\u self as menus%}
{{菜单.菜单链接(项目,属性,0,菜单名称)}{{1.}
{%宏菜单链接(项目、属性、菜单级别、菜单名称)%}{{1.}
{%import\u self as menus%}
{# 1. #}
{%
设置菜单\u类=[
“c菜单-”~menu|u name | clean|u class,
]
%}
{%if items%}
{%if menu_level==0%}
{%else%}
    {%endif%} {items%%中的项的%s} {% 设置类=[ 菜单级别?“下拉菜单项u-标题\子菜单项列表项”:“导航项u-标题\导航项”, item.u是否展开?“展开”, item.u是否折叠?“折叠”, item.in_active_trail?“active”, item.below?“导航项目u-标题\导航项目扩展导航项目hs具有子菜单u-标题\导航项目”, ] %} {% 设置链接\u类=[ “导航链路”, 非菜单级?'u-header\u导航链接':'u-header\u子菜单导航链接', item.in_active_trail?“active”, item.url.getOption('attributes').class?item.url.getOption('attributes').class | join(''), ] %} {%if item.below%} {%set title%} {{item.title} {%endset%} {{link(title,item.url,{'class':link_类,'data toggle':'dropdown','aria expanded':'false','aria haspoop':'true'}}} {{menus.menu_链接(下面的项,属性,menu_级别+1)} {%else%} {{link(item.title,item.url,{'class':link_classes}}} {%endif%} {%endfor%}
{%endif%} {%endmacro%}
我要拿回我的钱
{#
/**
 * @file
 * Theme override to display a menu.
 */
#}
{% import _self as menus %}
{{ menus.menu_links(items, attributes, 0, menu_name) }} {# 1. #}

{% macro menu_links(items, attributes, menu_level, menu_name) %} {# 1. #}
  {% import _self as menus %}
  {# 1. #}
  {%
     set menu_classes = [
       'c-menu-' ~ menu_name|clean_class,
     ]
 %}
  {% if items %}
    {% if menu_level == 0 %}
      <ul{{ attributes.addClass('navbar-nav u-header__navbar-nav') }}>
    {% else %}
      <ul class="hs-sub-menu list-unstyled u-header__sub-menu u-header__sub-menu-offset animated">
    {% endif %}
    {% for item in items %}
      {%
        set classes = [
          menu_level ? 'dropdown-item u-header__sub-menu-list-item' : 'nav-item u-header__nav-item',
          item.is_expanded ? 'expanded',
          item.is_collapsed ? 'collapsed',
          item.in_active_trail ? 'active',
          item.below ? 'nav-item u-header__nav-item expanded nav-item hs-has-sub-menu u-header__nav-item',
        ]
      %}
      <li{{ item.attributes.addClass(classes) }} data-event="hover" data-animation-in="fadeInUp" data-animation-out="fadeOut">

        {%
        set link_classes = [
        'nav-link',
        not menu_level ? 'u-header__nav-link' : 'u-header__sub-menu-nav-link',
        item.in_active_trail ? 'active',
        item.url.getOption('attributes').class ? item.url.getOption('attributes').class | join(' '),
        ]
        %}
        {% if item.below %}
          {% set title %}
          {{ item.title }}<span class="fa fa-angle-down u-header__nav-link-icon"></span>
          {% endset %}

          {{ link(title, item.url, {'class': link_classes, 'data-toggle': 'dropdown', 'aria-expanded': 'false', 'aria-haspopup': 'true' })}}

          {{ menus.menu_links(item.below, attributes, menu_level + 1) }}
        {% else %}
          {{ link(item.title, item.url, {'class': link_classes}) }}
        {% endif %}
      </li>
    {% endfor %}
    </ul>
  {% endif %}

{% endmacro %}