如何给Drupal8的main menu添加class

如何给Drupal8的main menu添加class

在主题设计的时候,主菜单元素需要特定的类,下面这个例子是同时给生成的主菜单ul和li添加,使用预处理函数: 
写在主题目录下面的MYTHEME.theme里面

function MYTHEME_preprocess_page(&$variables) {

 // Pass the main menu and secondary menu to the template as render arrays.
 if (!empty($variables['main_menu'])) {
   $variables['main_menu']['#attributes']['id'] = 'main-menu-links';
   $variables['main_menu']['#attributes']['class'] = array('links', 'clearfix', 'MYNEW_class');
 }

}

也可以给某个菜单添加class,比如给首页添加.home

<?php

// add class to menu
function MYTHEME_preprocess_menu__main(&$variables) {
 $variables['attributes']['class'][] = 'main-menu';
 $first = reset($variables['items']);
 if ($first['url']->getRouteName() == '<front>') {
   $key = key($variables['items']);
   $variables['items'][$key]['attributes']->addClass(['home']);
 }
}