смысл я понял… но мы возвращаемся к тому что при таком подходе я оборачиваю ul со стандартным классом .menu в див с нужным классом а потом все равно с этим классом бегаю по пяти тысячам строк стиля… или я чего то недопонимаю… уже мозг кипит от этого меню…если осилите можете глянуть как это сделано для виджета контента.
убрать класс "menu" и использовать свой
а зачем менять этот класс, к чему такие сложности?поправил под себя
почему нельзя просто изменить селектор?
недопонял..
В CSS стили можно привязывать не только к классу, но и к последовательности классов и/или элементов
Меню в шапке:
header .menu { ... }
sidebar .menu:nth-child(2) { ... }
убрать класс "menu" и использовать свой
а зачем менять этот класс, к чему такие сложности?поправил под себя
почему нельзя просто изменить селектор?
недопонял..
В CSS стили можно привязывать не только к классу, но и к последовательности классов и/или элементов
Меню в шапке:
Второе по счету меню в боковой колонке:
header .menu { ... }
и так далее, см. документацию по CSS
sidebar .menu:nth-child(2) { ... }
к сожалению, мне от этого не легче… я видимо, как то криво изъясняюсь, что вы меня недопонимаете… префиксы, селекторы и вообще стили править в моем случае не вариант… если же даже я и осилю 5 тысяч строк стиля, то к этому меню ещё и скрипты подключены, написанные под него… вот здесь я и тормознусь… все бы нечего, заменил я в три класса и все как бы работает, остальные меню тоже выходят с этими же классам ui\menu.tpl и… ладно, поправил бы селекторами… но блин, оно ещё и к табам имеет отношение… в общем получается что так, что так править кучу стилей… или же решение… существует возможность выбора вот этого ui\menu.tpl и все проблемы ушли
т.ч. хочешь свое меню, делай своё))
PIN, печальновато...
Atid — Gorec, вы наверное самый понимающий меня..\templates\default\widgets\menu\menu.tpl, в нем поменял
$this->menu( $widget->options['menu'], $widget->options['is_detect'], 'menu', $widget->options['max_items'], true ); на свой класс и о чудо заработало… частично… так как стили добавились для ul и li первого уровня… а вот можно ли разобрать эту строчку на ul,li,li a ,li ul li… и тогда уже не будет проблем каждому элементу добавить свой класс
.\templates\default\widgets\menu\menu.tpl здесь у меня стоит nav navbar-nav
Выводится Меню здесь.
<?php if($this->hasWidgetsOn('top')) { ?> <nav class="navbar navbar-inverse navbar-static-top" role="navigation"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse-1"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand visible-xs-block" href="#">Меню</a> </div> <div class="collapse navbar-collapse" id="navbar-collapse-1"> <?php $this->widgets('top', false, 'wrapper_plain'); ?> </div> </nav> <?php } ?>
частично… так как стили добавились для ul и li первого уровня… а вот можно ли разобрать эту строчку на ul,li,li a ,li ul li… и тогда уже не будет проблем каждому элементу добавить свой класс
.navbar-inverse .navbar-nav > li > a { color: #fff; }
это я могу делать с помощью админки… виджеты -дизайн..solitario84, я может тоже вас не до конца понял. Вам нужно чтобы вы просто имели возможность менять в админке .\templates\default\widgets\menu\menu.tpl класс меню так ведь?
стили я не трогаю вообще… они уже еть готовые, переписать их я не могу…Код PHP:
.navbar-inverse .navbar-nav > li > a {
color: #fff;
}
Если в стилях стоит > то она будет выводить стили только для первого дочернего элемента. То есть .navbar-inverse .navbar-nav > li > a задаст стиль только элементу который указан здесь. Если > то .navbar-inverse .navbar-nav li a стиль будет применен для всех тегов а расположенных в теге ли
<?php $this->menu( $widget->options['menu'], $widget->options['is_detect'], 'menu', $widget->options['max_items'], true );
<ul>
<il><ul><il></il></ul></il>
<il></il>
</ul>
Эти теги разбираются в файле /templates/bootstrap/assets/ui/menu.tpl.php<ul>
<il><ul><il></il></ul></il>
<il></il>
</ul>
Вы мне или?Меню пользователя после смены как отображается ???
<ul class="<?php echo $css_class; ?>"> <?php if ($max_items){ // // Считаем количество пунктов первого уровня // $first_level_count = 0; $first_level_limit = 0; $index = 0; foreach($menu as $item){ if ($item['level']==1){ $first_level_count++; } if ($first_level_count > $max_items && !$first_level_limit){ $first_level_limit = $index; } $index++; } // // Если на первом уровне больше пунктов, чем нужно то // разрезаем массив меню на две части - видимую и скрытую // if ($first_level_limit) { $item_more_id = 10000; 'id' => $item_more_id, 'title' => LANG_MENU_MORE, 'childs_count' => ($first_level_count - $max_items), 'level' => 1, 'class' => 'more' ) ) ); foreach($more_items as $id=>$item){ if ($item['level']==1){ $more_items[$id]['parent_id'] = $item_more_id; } $more_items[$id]['level']++; } $menu = $visible_items + $item_more + $more_items; // dump($menu); } } ?> <?php $last_level = 0; ?> <?php foreach($menu as $id=>$item){ ?> <?php ?> <?php for ($i=0; $i<($last_level - $item['level']); $i++) { ?> </li></ul> <?php } ?> <?php if ($item['level'] <= $last_level) { ?> </li> <?php } ?> <?php if ($is_active) { $css_classes[] = 'active'; } if ($item['childs_count'] > 0) { $css_classes[] = 'dropdown'; } $onclick = isset($item['options']['confirm']) ? "return confirm('{$item['options']['confirm']}')" : $onclick; ?> <li <?php if ($css_classes) { ?>class="<?php echo $css_classes; ?>"<?php } ?>> <?php if ($is_disabled) {?> <span class="item<?php if ($is_disabled) { ?> disabled<?php } ?>"><?php html($item['title']); ?></span> <?php } else { ?> <a class="item" href="<?php echo !empty($item['url']) ? $item['url'] : 'javascript:void(0)'; ?>" <?php if ($onclick) { ?>onclick="<?php echo $onclick; ?>"<?php } ?> <?php if ($target) { ?>target="<?php echo $target; ?>"<?php } ?>> <span class="wrap"> <span class="counter"><?php html($item['counter']); ?></span> <?php } ?> <?php if ($item['childs_count'] > 0) { ?><span class="caret"></span><?php } ?> </span> </a> <?php } ?> <?php if ($item['childs_count'] > 0) { ?><ul class="dropdown-menu"><?php } ?> <?php $last_level = $item['level']; ?> <?php } ?> <?php for ($i=0; $i<$last_level; $i++) { ?> </li></ul> <?php } ?>
оно у меня и было свое… но сейчас Вы мне очень помогли!.. и все стало на свои места… работает четко и у остальных меню стили не едут… моей ошибкой было то что в этом файле я прописывал вместо
Если вам нужен бутстрап меню я могу вам его скинуть.
<ul class="<?php echo $css_class; ?>">