Меню в InstantCMS 2//

#16 23 марта 2015 в 01:13

если осилите можете глянуть как это сделано для виджета контента.

Atid — Gorec
смысл я понял… но мы возвращаемся к тому что при таком подходе я оборачиваю ul со стандартным классом .menu в див с нужным классом а потом все равно с этим классом бегаю по пяти тысячам строк стиля… или я чего то недопонимаю… уже мозг кипит от этого меню…
#17 23 марта 2015 в 09:49



убрать класс "menu" и использовать свой

solitario84

поправил под себя

solitario84
а зачем менять этот класс, к чему такие сложности?
почему нельзя просто изменить селектор?

r2

недопонял..

solitario84

В CSS стили можно привязывать не только к классу, но и к последовательности классов и/или элементов

Меню в шапке:
  1. header .menu { ... }
Второе по счету меню в боковой колонке:
  1. sidebar .menu:nth-child(2) { ... }
и так далее, см. документацию по CSS
#18 23 марта 2015 в 11:42




убрать класс "menu" и использовать свой

solitario84

поправил под себя

solitario84
а зачем менять этот класс, к чему такие сложности?
почему нельзя просто изменить селектор?

r2

недопонял..

solitario84

В CSS стили можно привязывать не только к классу, но и к последовательности классов и/или элементов

Меню в шапке:
  1. header .menu { ... }
Второе по счету меню в боковой колонке:
  1. sidebar .menu:nth-child(2) { ... }
и так далее, см. документацию по CSS

r2

к сожалению, мне от этого не легче… я видимо, как то криво изъясняюсь, что вы меня недопонимаете… префиксы, селекторы и вообще стили править в моем случае не вариант… если же даже я и осилю 5 тысяч строк стиля, то к этому меню ещё и скрипты подключены, написанные под него… вот здесь я и тормознусь… все бы нечего, заменил я в три класса и все как бы работает, остальные меню тоже выходят с этими же классам ui\menu.tpl и… ладно, поправил бы селекторами… но блин, оно ещё и к табам имеет отношение… в общем получается что так, что так править кучу стилей… или же решение… существует возможность выбора вот этого ui\menu.tpl и все проблемы ушли
#19 23 марта 2015 в 15:41
5 тысяч строк… Зачем такие сложности… ??? Дублируете в bootstrap то меню которое вам нужно, и заменяете класс… Потом привязываете те оставшиеся которые вам нужны, и все… Или вы думаете, что все что вам хочется, уже адаптированно под движок )))) И вообще, bootstrap для статичных сайтов только подойдет без изменения… А вот для другого, так там и на их офсайте написано, что это всего лишь каркас… ))))
#20 23 марта 2015 в 17:35
solitario84, как то смотрел, не нашел
#21 23 марта 2015 в 17:38
solitario84, там узел завязан между шаблоном и системными файлами, и…, если не ошибаюсь, даже ядро
т.ч. хочешь свое меню, делай своё))
#22 23 марта 2015 в 19:27
wayfox, было бы все так просто, я бы тему не создавал..
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… и тогда уже не будет проблем каждому элементу добавить свой класс
#23 23 марта 2015 в 21:37
http://goicms.rdportal.ru/ оба меню (белый и синий) сделаны на бутстрапе.
.\templates\default\widgets\menu\menu.tpl здесь у меня стоит nav navbar-nav
Выводится Меню здесь.
  1. <?php if($this->hasWidgetsOn('top')) { ?>
  2. <nav class="navbar navbar-inverse navbar-static-top" role="navigation">
  3. <div class="navbar-header">
  4. <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse-1">
  5. <span class="icon-bar"></span>
  6. <span class="icon-bar"></span>
  7. <span class="icon-bar"></span>
  8. </button>
  9. <a class="navbar-brand visible-xs-block" href="#">Меню</a>
  10. </div>
  11. <div class="collapse navbar-collapse" id="navbar-collapse-1">
  12. <?php $this->widgets('top', false, 'wrapper_plain'); ?>
  13. </div>
  14. </nav>
  15. <?php } ?>
solitario84, я может тоже вас не до конца понял. Вам нужно чтобы вы просто имели возможность менять в админке .\templates\default\widgets\menu\menu.tpl класс меню так ведь?

частично… так как стили добавились для ul и li первого уровня… а вот можно ли разобрать эту строчку на ul,li,li a ,li ul li… и тогда уже не будет проблем каждому элементу добавить свой класс

solitario84
  1. .navbar-inverse .navbar-nav > li > a {
  2. color: #fff;
  3. }
Если в стилях стоит > то она будет выводить стили только для первого дочернего элемента. То есть .navbar-inverse .navbar-nav > li > a задаст стиль только элементу который указан здесь. Если > то .navbar-inverse .navbar-nav li a стиль будет применен для всех тегов а расположенных в теге ли
#24 23 марта 2015 в 21:41
Меню пользователя после смены как отображается ???
#25 23 марта 2015 в 22:10

solitario84, я может тоже вас не до конца понял. Вам нужно чтобы вы просто имели возможность менять в админке .\templates\default\widgets\menu\menu.tpl класс меню так ведь?

Atid — Gorec
это я могу делать с помощью админки… виджеты -дизайн..

Код PHP:

.navbar-inverse .navbar-nav > li > a {
color: #fff;
}

Если в стилях стоит > то она будет выводить стили только для первого дочернего элемента. То есть .navbar-inverse .navbar-nav > li > a задаст стиль только элементу который указан здесь. Если > то .navbar-inverse .navbar-nav li a стиль будет применен для всех тегов а расположенных в теге ли

wayfox
стили я не трогаю вообще… они уже еть готовые, переписать их я не могу…
#26 23 марта 2015 в 22:15
Atid — Gorec, мне бы теперь вот это:
  1. <?php
  2.  
  3. $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>
#27 24 марта 2015 в 02:13

<ul>
<il><ul><il></il></ul></il>
<il></il>
</ul>

solitario84
Эти теги разбираются в файле /templates/bootstrap/assets/ui/menu.tpl.php

Меню пользователя после смены как отображается ???

wayfox
Вы мне или?
#28 24 марта 2015 в 02:15
Если вам нужен бутстрап меню я могу вам его скинуть.
  1. <ul class="<?php echo $css_class; ?>">
  2.  
  3. <?php if ($max_items){
  4.  
  5. //
  6. // Считаем количество пунктов первого уровня
  7. //
  8. $first_level_count = 0;
  9. $first_level_limit = 0;
  10. $index = 0;
  11. foreach($menu as $item){
  12. if ($item['level']==1){ $first_level_count++; }
  13. if ($first_level_count > $max_items && !$first_level_limit){ $first_level_limit = $index; }
  14. $index++;
  15. }
  16.  
  17. //
  18. // Если на первом уровне больше пунктов, чем нужно то
  19. // разрезаем массив меню на две части - видимую и скрытую
  20. //
  21. if ($first_level_limit) {
  22.  
  23. $visible_items = array_slice($menu, 0, $first_level_limit, true);
  24. $more_items = array_slice($menu, $first_level_limit, sizeof($menu) - $first_level_limit, true);
  25.  
  26. $item_more_id = 10000;
  27.  
  28. $item_more = array(
  29. $item_more_id => array(
  30. 'id' => $item_more_id,
  31. 'title' => LANG_MENU_MORE,
  32. 'childs_count' => ($first_level_count - $max_items),
  33. 'level' => 1,
  34. 'options' => array(
  35. 'class' => 'more'
  36. )
  37. )
  38. );
  39.  
  40. foreach($more_items as $id=>$item){
  41. if ($item['level']==1){
  42. $more_items[$id]['parent_id'] = $item_more_id;
  43. }
  44. $more_items[$id]['level']++;
  45. }
  46.  
  47. $menu = $visible_items + $item_more + $more_items;
  48.  
  49. // dump($menu);
  50.  
  51. }
  52.  
  53.  
  54.  
  55. } ?>
  56.  
  57.  
  58. <?php $last_level = 0; ?>
  59.  
  60. <?php foreach($menu as $id=>$item){ ?>
  61.  
  62. <?php
  63. $is_active = in_array($id, $active_ids);
  64. $is_disabled = isset($item['disabled']) && $item['disabled'];
  65. if (!isset($item['level'])) { $item['level'] = 1; }
  66. if (!isset($item['childs_count'])) { $item['childs_count'] = 0; }
  67. ?>
  68.  
  69. <?php for ($i=0; $i<($last_level - $item['level']); $i++) { ?>
  70. </li></ul>
  71. <?php } ?>
  72.  
  73. <?php if ($item['level'] <= $last_level) { ?>
  74. </li>
  75. <?php } ?>
  76.  
  77. <?php
  78. $css_classes = array();
  79. if ($is_active) { $css_classes[] = 'active'; }
  80. if ($item['childs_count'] > 0) { $css_classes[] = 'dropdown'; }
  81. if (isset($item['options']['class'])) { $css_classes[] = $item['options']['class']; }
  82. $css_classes = $css_classes ? implode(' ', $css_classes) : false;
  83. $onclick = isset($item['options']['onclick']) ? $item['options']['onclick'] : false;
  84. $onclick = isset($item['options']['confirm']) ? "return confirm('{$item['options']['confirm']}')" : $onclick;
  85. $target = isset($item['options']['target']) ? $item['options']['target'] : false;
  86. ?>
  87.  
  88. <li <?php if ($css_classes) { ?>class="<?php echo $css_classes; ?>"<?php } ?>>
  89.  
  90. <?php if ($is_disabled) {?>
  91. <span class="item<?php if ($is_disabled) { ?> disabled<?php } ?>"><?php html($item['title']); ?></span>
  92. <?php } else { ?>
  93. <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 } ?>>
  94. <span class="wrap">
  95. <?php if (!empty($item['title'])) { html($item['title']); } ?>
  96. <?php if (isset($item['counter']) && $item['counter']){ ?>
  97. <span class="counter"><?php html($item['counter']); ?></span>
  98. <?php } ?>
  99. <?php if ($item['childs_count'] > 0) { ?><span class="caret"></span><?php } ?>
  100. </span>
  101. </a>
  102. <?php } ?>
  103.  
  104. <?php if ($item['childs_count'] > 0) { ?><ul class="dropdown-menu"><?php } ?>
  105.  
  106. <?php $last_level = $item['level']; ?>
  107.  
  108. <?php } ?>
  109.  
  110. <?php for ($i=0; $i<$last_level; $i++) { ?>
  111. </li></ul>
  112. <?php } ?>
  113.  
#29 24 марта 2015 в 02:44


Если вам нужен бутстрап меню я могу вам его скинуть.

Atid — Gorec
оно у меня и было свое… но сейчас Вы мне очень помогли!.. и все стало на свои места… работает четко и у остальных меню стили не едут… моей ошибкой было то что в этом файле я прописывал вместо
  1. <ul class="<?php echo $css_class; ?>">
в самом начале файла, свой класс и из за этого этот класс добавлялся и ко всем остальным меню и даже к табам… а теперь я нужный мне класс прописал в файле виджета меню, а остальные классы здесь… Все,,,, мозг взорван, но победа!!! Ура! Ура! Ура! Еще раз спасибо Вам огромнейшее!.. тему пока не закрываю, может кому то пригодится…
#30 25 марта 2015 в 08:25
Я имею в виду сделать возможность задавать стили для тега ul, то есть чтобы была возможность заменить класс menu на свое. Сейчас мы можем заменит классы для обертки виджета но не самого меню.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.