Перейти к содержимому


Делаем развернутое меню на jQuery


  • Вы не можете ответить в тему
Сообщений в теме: 92

#21 Robby

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 162 сообщений
Репутация: 75
Продвинутый

Отправлено 10 September 2011 - 08:32 AM

Попробуйте такой вариант формирования кода меню:

{* шаблон блока развернутого дерева категорий *}

{if $big_categories_tree && $big_categories_tree_count>0}


    {section name=h loop=$big_categories_tree}
    {if $big_categories_tree[h].categoryID != 1}
    {if $big_categories_tree[h.index].level lt $big_categories_tree[h.index_next].level}{* вывод категорий *}
  • {if $smarty.const.CONF_MOD_REWRITE eq 1}category_{$big_categories_tree[h].categoryID}.html{else}index.php?categoryID={$big_categories_tree[h].categoryID}{/if}

      {else} {* вывод подкатегорий или категорий без вложенности *}
    • {if $smarty.const.CONF_MOD_REWRITE eq 1}category_{$big_categories_tree[h].categoryID}.html{else}index.php?categoryID={$big_categories_tree[h].categoryID}{/if}

    • {/if}
      {if $big_categories_tree[h.index].level gt $big_categories_tree[h.index_next].level}


  • {/if}
    {/if}
    {/section}


{else}
{$smarty.const.STRING_NO_CATEGORIES}

{/if}


Вот пример меню, необходима подключенная библиотека JavaScript jQuery



{* шаблон блока развернутого дерева категорий *}

{if $big_categories_tree && $big_categories_tree_count>0}


    {section name=h loop=$big_categories_tree}
    {if $big_categories_tree[h].categoryID != 1}

    {if $big_categories_tree[h.index].level lt $big_categories_tree[h.index_next].level}{* вывод категорий *}
  • {if $big_categories_tree[h.index].level>=1}{/if}{if $smarty.const.CONF_MOD_REWRITE eq 1}category_{$big_categories_tree[h].categoryID}.html{else}index.php?categoryID={$big_categories_tree[h].categoryID}{/if}{if $big_categories_tree[h.index].level<1}{/if}

      {else} {* вывод подкатегорий или категорий без вложенности *}

    • {if $big_categories_tree[h.index].level>0}{/if}{if $smarty.const.CONF_MOD_REWRITE eq 1}category_{$big_categories_tree[h].categoryID}.html{else}index.php?categoryID={$big_categories_tree[h].categoryID}{/if}



    • {/if}

      {if $big_categories_tree[h.index].level gt $big_categories_tree[h.index_next].level}



  • {/if}
    {/if}
    {/section}


{else}
{$smarty.const.STRING_NO_CATEGORIES}

{/if}

Стили:

#treeMenu {
width: 240px;
margin: -10px;
}
#treeMenu h2 {
color: #454545;
font: bold 16px 'Segoe UI',Helvetica,Arial,sans-serif;
margin-bottom: 12px;
}
#treeMenu ul {
list-style: none outside none;
margin: 0;
padding: 0;
}
#treeMenu ul li {
-moz-border-radius: 3px 3px 3px 3px;
background: url("treeTabBg.gif") repeat-x scroll 0 0 #F5F5F5;
background-color: #CCCCCC;
border: 1px solid #FFFFFF;
margin: 4px 0;
overflow: hidden;
}
#treeMenu ul li span {
background: url("treeSplit.png") no-repeat scroll 100% 0 transparent;
cursor: pointer;
display: inline-block;
float: right;
height: 30px;
width: 30px;
}
#treeMenu ul li a {
color: #4D5F6B;
display: inline-block;
float: left;
font-size: 13px;
padding: 9px 10px;
text-decoration: none;
width: 186px;
}
#treeMenu ul li a:hover {
color: #FFA200
}

#treeMenu ul li span.opened {
background-position: 100% -61px;
}
#treeMenu ul li div {
clear: both;
height: auto;
}
#treeMenu ul li li {
background: none repeat scroll 0 0 transparent;
border-color: #EEEEEE -moz-use-text-color #FFFFFF;
border-left: 0 none;
border-right: 0 none;
border-style: solid none;
border-width: 1px 0;
clear: both;
margin: 0;
padding-left: 10px;
}
#treeMenu ul li li a {
color: #626262;
float: left;
font-size: 12px;
padding: 5px 0;
width: auto;
}
#treeMenu ul li li a:hover {
color: #000000;
text-decoration: underline;

}
#treeMenu ul li li span {
background-position: -10px -263px;
cursor: default;
display: inline;
float: left;
height: 20px;
width: 15px;
}
#treeMenu ul li li span.closed {
background-position: -10px -131px;
cursor: pointer;
}
#treeMenu ul li li span.closed.opened {
background-position: -7px -197px;
}
#treeMenu ul li li li {
border: 0 none;
}


В архиве пример готового меню
[ATTACH]165.vB[/ATTACH]
  • 0

#22 Cheshir

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 212 сообщений
Репутация: 48
Ассистент

Отправлено 10 September 2011 - 11:34 AM

Robby, это выпадающее меню, прямо противоположное меню тому, на которое открывалась тема.

Но для чистоты эксперимента попробовал интегрировать. Почему то видит только одну категорию первого уровня, остальные категории первого уровня выводит как глубоко вложенные.

R.Sergey

офф топ
Спойлер

  • 0

#23 Dbus

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 1116 сообщений
Репутация: 174
Мастер
  • ГородОдесса

Отправлено 10 September 2011 - 12:32 PM

У меня все работает. Там надо всего одно li закрыть..

{if $categoryID != $big_categories_tree[h].categoryID}

  • {else}
  • {/if}{else}
  • {/if}

    какойто из них.


  • Если честно, я не врубаюсь зачем эта конструкция, если там при любом раскладе
  • получается...
    • 0
    502 Bad Gateway

    #24 R.Sergey

      Администратор

    • Администраторы
    • 2810 сообщений
    Репутация: 332
    Мастер

    Отправлено 10 September 2011 - 12:33 PM

    Cheshir, помню помню до понедельника думаю покажу.
    • 0

    #25 Robby

      Продвинутый пользователь

    • Assistent vsupport.club
    • PipPipPip
    • 162 сообщений
    Репутация: 75
    Продвинутый

    Отправлено 10 September 2011 - 01:11 PM

    Cheshir, меню конечно противоположное. А не работает скорее всего потому, что изначально оно неправильное с не закрытыми тегами
  • .
    Мой код дает такую структуру меню:



    • #

    • #

    • #

    • #

    • #

    • #

      • #

        • #



      • #





    что является правильным.
    • 0

    #26 Dbus

      Продвинутый пользователь

    • Assistent vsupport.club
    • PipPipPip
    • 1116 сообщений
    Репутация: 174
    Мастер
    • ГородОдесса

    Отправлено 10 September 2011 - 01:43 PM

    Вот вариант попроще, без всяких скриптов, на чистом css.
    Код брал исходный, т.е. ошибки не исключены. На досуге еще поковыряюсь, в том числе и с тегами...


    {if $big_categories_tree && $big_categories_tree_count>0}
    {assign var="oldnumber" value=0}

      {section name=h loop=$big_categories_tree}
      {if $big_categories_tree[h].categoryID != 1}
      {if $big_categories_tree[h].level > $oldnumber}

        {/if}
        {if $big_categories_tree[h].level < $oldnumber}
        {section name=w loop=$oldnumber-$big_categories_tree[h].level}

      {/section}
      {/if}

    • {if $smarty.const.CONF_MOD_REWRITE eq 1}category_{$big_categories_tree[h].categoryID}.html{else}index.php?categoryID={$big_categories_tree[h].categoryID}{/if}
      {assign var="oldnumber" value=$big_categories_tree[h].level}
      {/if}
      {/section}

    {else}
    {$smarty.const.STRING_NO_CATEGORIES}
    {/if}




    .multinav {
    		list-style: none;
    		margin: 0px;
    		padding: 0px;
    		position: relative;
    		display: block;
    		float: left;
    	}
    
    	.multinav li {
    		display: block;
    		line-height: 1em;
    		position: relative;
    	}
    
    
    	.multinav li a {
    	  text-decoration: none;
    		display: block;
    		border: 1px solid #DDDDDD;
    		color: #444444;
    		background-color: #EEEEEE;
    		padding: 5px 10px;
    		line-height: 1em;
    		white-space: nowrap;
    		border-left-width: 3px;
    	}
    
    	.multinav li a:hover {
    		background-color: #17A8D2;
    		color: #555555;
    	}
    
    	.multinav li a:active {
    		background-color: #00CC00;
    		color: #FFFFFF;
    	}
    
    	.multinav ul {
    		list-style: none;
    		position: absolute;
    		margin: 0px;
    		padding: 0px;
    		display: block;
    		top: 0px;
    		left: 100%;
    		display: none;
    	}
    
    	.multinav li:hover > ul {
    		display: block;
    	}
    
    

    • 0
    502 Bad Gateway

    #27 Cheshir

      Продвинутый пользователь

    • Assistent vsupport.club
    • PipPipPip
    • 212 сообщений
    Репутация: 48
    Ассистент

    Отправлено 10 September 2011 - 01:54 PM

    Dbus, Ой, спасибо тебе добрый человек! ой спасибо!!
    • 0

    #28 makki

      Продвинутый пользователь

    • Assistent vsupport.club
    • PipPipPip
    • 148 сообщений
    Репутация: 7
    Начинающий

    Отправлено 24 September 2011 - 08:39 PM

    Dbus Спасибо. Единственная проблема: у меня картинки товаров перекрывают меню. Как решить эту проблему?

    И другой вопрос как оставить первую и вторую категорию автоматически развернутой в столбец, а остальные выпадающими. Нужен хотя бы намек.
    • 0

    #29 Dbus

      Продвинутый пользователь

    • Assistent vsupport.club
    • PipPipPip
    • 1116 сообщений
    Репутация: 174
    Мастер
    • ГородОдесса

    Отправлено 24 September 2011 - 11:23 PM

    Dbus Спасибо. Единственная проблема: у меня картинки товаров перекрывают меню. Как решить эту проблему?

    И другой вопрос как оставить первую и вторую категорию автоматически развернутой в столбец, а остальные выпадающими. Нужен хотя бы намек.


    По первому вопросу - как вариант, добавить в стиль .multinav ul свойство z-index: 100;
    по второму - хз )
    • 0
    502 Bad Gateway

    #30 Cheshir

      Продвинутый пользователь

    • Assistent vsupport.club
    • PipPipPip
    • 212 сообщений
    Репутация: 48
    Ассистент

    Отправлено 29 September 2011 - 10:13 PM

    Dbus, тоже обнаружилась проблема, в отображении. В фаирфоксе все хорошо, но в интернет эксплорере пытаясь переходить по ступеням меню (на более глубокого вложения) слетает выделение, и нельзя добраться до более глубокого вложения 3-4 и т.д. подкатегорий

    В связи с этим возникла необходимость в:

    1. оптимизировать код под эксплорер
    2. Можно ли под эксплорер сделать иной фоновый цвет менюшки, отличимый от отображаемой в фаирфоксе.
    3. Желательно чтобы наведении на подкатегорию, а после отводе мышки от этой подкатегории, менюшка не сворачивалась опять до исходного состояния, а оставалось на том уровне, при котором курсор мыши ушел за пределы менюшки

    Вот как то так)
    • 0

    #31 Dbus

      Продвинутый пользователь

    • Assistent vsupport.club
    • PipPipPip
    • 1116 сообщений
    Репутация: 174
    Мастер
    • ГородОдесса

    Отправлено 29 September 2011 - 11:39 PM

    1. У меня в осле (9м, правда, меньше не имею) меню по ссылке выглядит нормально при любом вложении.
    А вообще я на поддержку ИЕ давно забил, ИМХО если человек не в состоянии обновить себе браузер, то кто ему доктор, пусть не видит скругленных углов, теней и прочих css3 радостей :) Не считаю нужным усложнять код в несколько раз ради поддержки тупорылых браузеров.

    2. никто не мешает использовать // и тд хаки и комменты для эксплорера, вот вдогонку Пишем css для ie 6 и/или ie 7 — internet explorer — ие, css хаки для IE, Opera и FF

    3. тут, наверное, без js не обойтись. нужно подумать. Хотя если по логике - как же менюшке тогда узнать, когда "уже можно" сворачиваться обратно ? :)
    • 0
    502 Bad Gateway

    #32 Cheshir

      Продвинутый пользователь

    • Assistent vsupport.club
    • PipPipPip
    • 212 сообщений
    Репутация: 48
    Ассистент

    Отправлено 29 September 2011 - 11:54 PM

    Dbus,

    Согласен, надо следовать прогрессу, но! есть статистика посещения моего магазина

    Изображение

    со статистикой не поспоришь... Таких вот твердолобых - 37 процентов! На 10% больше чем пользователей Лисы. А это значительное снижение конвертации!!! У меня в день более 50 уникалов, исключительно целевых... и теперь понимаю от чего такая слабая конвертация... Конечно можно на них все, тупых забить, но каждому не объяснить что лучше и красивше в лисе, или опере.

    Описанная выше проблема появляется и 8ом эксплорере... И эту проблему надо как то решать!

    PS

    У меня на всех компах ХР стоит, есть у кого возможность посмотреть в 9ом IE? который только под висту или 7ку. Такая же беда с менюшкой как и в 8ке?
    • 0

    #33 Dbus

      Продвинутый пользователь

    • Assistent vsupport.club
    • PipPipPip
    • 1116 сообщений
    Репутация: 174
    Мастер
    • ГородОдесса

    Отправлено 30 September 2011 - 12:07 AM

    нет, я ж выше написал. в 9 все ок.
    • 0
    502 Bad Gateway

    #34 Cheshir

      Продвинутый пользователь

    • Assistent vsupport.club
    • PipPipPip
    • 212 сообщений
    Репутация: 48
    Ассистент

    Отправлено 30 September 2011 - 09:38 AM

    Dbus,

    А по поводу того, как сделать, чтобы при выходе курсора мышки за поля меню, она не сворачивалась в исходное положение, а "замирала" в выбранном положении? Не удобно и раздражает, когда пытаешься перейти на уровень 4ого - 5ого вложения, рука дергается и вылетает за рамки меню, и приходится по новой проходить все меню...
    • 0

    #35 natashashukina

      Пользователь

    • Пользователи
    • PipPip
    • 22 сообщений
    Репутация: 0
    Начинающий

    Отправлено 13 November 2011 - 12:42 AM

    Dbus,

    А по поводу того, как сделать, чтобы при выходе курсора мышки за поля меню, она не сворачивалась в исходное положение, а "замирала" в выбранном положении? Не удобно и раздражает, когда пытаешься перейти на уровень 4ого - 5ого вложения, рука дергается и вылетает за рамки меню, и приходится по новой проходить все меню...


    Тоже интересно как можно сделать ??? Кто нибудь решил ?
    • 0

    #36 CMETAH

      Новичок

    • Пользователи
    • Pip
    • 2 сообщений
    Репутация: 0
    Начинающий

    Отправлено 04 December 2011 - 03:41 PM

    а по горезонтале есть ли решение?
    • 0

    #37 Cheshir

      Продвинутый пользователь

    • Assistent vsupport.club
    • PipPipPip
    • 212 сообщений
    Репутация: 48
    Ассистент

    Отправлено 04 December 2011 - 04:59 PM

    а по горезонтале есть ли решение?

    ГоризонталИ - это раз, а во-вторых первый код - для меню по горизонтали. Внимательно читайте
    • 0

    #38 Shaxr

      Продвинутый пользователь

    • Download User
    • PipPipPip
    • 41 сообщений
    Репутация: 0
    Начинающий

    Отправлено 26 December 2011 - 11:42 PM

    Как это реализовать в шаблоне "рыбалка" - там другой блок категории, как ни пробовал - ничего не получается, не говоря о том что даже в этом шаблоне и без этих выкрутасов даже не добавить (чтобы было видно) более нескольких подкатегорий ... - планируется большое количество в основных категориях - более трех подкатегорий

    ---------- Сообщение объединено ----------

    Что нужно поменять тут для того чтобы работало

    {if $big_categories_tree && $big_categories_tree_count>0}
    {assign var="oldnumber" value=0}


    {section name=h loop=$big_categories_tree}
    {if $big_categories_tree[h].categoryID != 1}

    {if $big_categories_tree[h].level > $oldnumber}{/section}{/if}



    {section name=j loop=$big_categories_tree max=$big_categories_tree[h].level}

    {/section}

    {if $big_categories_tree[h].picture != ""}

    {/if}




    {if $smarty.section.j.index==$big_categories_tree[h].level-1}{else}{/if} {if $smarty.const.CONF_SHOW_COUNTPROD eq 1}  {$big_categories_tree[h].products_count}{/if}{$big_categories_tree[h].name}


    {assign var="oldnumber" value=$big_categories_tree[h].level}
    {assign var="oldcat" value=$big_categories_tree[h].categoryID}

    {/if}
    {/section}

    {if $oldnumber > 0}{section name=w loop=$oldnumber}
    {/section}{/if}
    {else}
    {$smarty.const.STRING_NO_CATEGORIES}
    {/if}


    • 0

    #39 rome_

      Пользователь

    • Пользователи
    • PipPip
    • 16 сообщений
    Репутация: 0
    Начинающий

    Отправлено 16 January 2012 - 02:02 AM

    У кого нибудь получилось Dbus нормально прикрутить к IE9?
    • 0

    #40 Dbus

      Продвинутый пользователь

    • Assistent vsupport.club
    • PipPipPip
    • 1116 сообщений
    Репутация: 174
    Мастер
    • ГородОдесса

    Отправлено 16 January 2012 - 07:53 PM

    У кого нибудь получилось Dbus нормально прикрутить к IE9?


    А что не так, оно в IE9 нормально пашет.
    • 0
    502 Bad Gateway