Bootstrap theme - multilevel submenu

Главные вкладки

Аватар пользователя Andrey_Ka Andrey_Ka 21 января 2016 в 6:22

Чтобы не забыть)
Взято из http://www.drupalgeeks.com/drupal-blog/how-render-bootstrap-sub-menus

Стили:

.dropdown:hover>.dropdown-menu{display:block}

.dropdown-submenu{position:relative}
.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px;border-radius:0 6px 6px 6px}
.dropdown-submenu:hover>.dropdown-menu{display:block}
.dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc;margin-top:5px;margin-right:-10px}
.dropdown-submenu:hover>a:after{border-left-color:#fff}
.dropdown-submenu.pull-left{float:none}
.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}

Хук в template.php:

<?php function имятемы_menu_link__main_menu($variables)
{
  
$element $variables['element'];
  
$sub_menu '';
  
  if (
$element['#below']) {
    
// Prevent dropdown functions from being added to management menu so it
    // does not affect the navbar module.
    
if (($element['#original_link']['menu_name'] == 'management') && (module_exists('navbar'))) {
      
$sub_menu drupal_render($element['#below']);
    } elseif ((!empty(
$element['#original_link']['depth'])) && $element['#original_link']['depth'] > 1) {
      
// Add our own wrapper.
      
unset($element['#below']['#theme_wrappers']);
      
$sub_menu '<ul class="dropdown-menu">' drupal_render($element['#below']) . '</ul>';
      
$element['#attributes']['class'][] = 'dropdown-submenu';
      
$element['#localized_options']['html'] = TRUE;
      
$element['#localized_options']['attributes']['class'][] = 'dropdown-toggle';
    
//  $element['#localized_options']['attributes']['data-toggle'] = 'dropdown';
    
} else {
      unset(
$element['#below']['#theme_wrappers']);
      
$sub_menu '<ul class="dropdown-menu">' drupal_render($element['#below']) . '</ul>';
      
$element['#title'] .= ' <span class="caret"></span>';
      
$element['#attributes']['class'][] = 'dropdown';
      
$element['#localized_options']['html'] = TRUE;
      
$element['#localized_options']['attributes']['class'][] = 'dropdown-toggle';
  
//    $element['#localized_options']['attributes']['data-toggle'] = 'dropdown';
// В оригинале предыдущая строчка была - это для работы по щелчку клавишей, если же работаем по ховеру,то комментим ее и и такую же снизу
    
}
  }
  if ((
$element['#href'] == $_GET['q'] || ($element['#href'] == '<front>' && drupal_is_front_page())) && (empty($element['#localized_options']['language']))) {
    
$element['#attributes']['class'][] = 'active';
  }
  
$output l($element['#title'], $element['#href'], $element['#localized_options']);
  return 
'<li' drupal_attributes($element['#attributes']) . '>' $output $sub_menu "</li>\n";

?>