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


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


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

#61 rome_

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

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

Отправлено 12 February 2012 - 12:05 AM

Хорошо когда структура имеет четко один уровень, а как если есть и 2 и 3 и 4....


Очень даже отлично, а вот если до 5 уровней то надо уже CSS дописывать
  • 0

#62 panv

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

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

Отправлено 12 February 2012 - 10:30 AM

{if $big_categories_tree[h].level < 4}
{$big_categories_tree[h].name}
{/if}
{if $big_categories_tree[h].level > 3}
здесь меняем если другое кол-во уровней, а как сделать если не четкое кол-во а разное и 2 и 3 и 4
  • 0

#63 rome_

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

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

Отправлено 12 February 2012 - 12:45 PM

{if $big_categories_tree[h].level < 4}
{$big_categories_tree[h].name}
{/if}
{if $big_categories_tree[h].level > 3}
здесь меняем если другое кол-во уровней, а как сделать если не четкое кол-во а разное и 2 и 3 и 4


Пожалуй ты прав, для твоего случая надо определять самый нижний уровень категории, а как это сделать моих познаний не достаточно... ( Погугли может задача уже решалась.
  • 0

#64 panv

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

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

Отправлено 12 February 2012 - 03:17 PM

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

#65 tevong

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

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

Отправлено 12 February 2012 - 07:13 PM

Учимся гуглить (как минимум первые 3 результата вас полностью устроят)

а что за "гуглить"? я такого не видел ;)
вопрос именно про то, что может кто уже это применял. чтоб не копаться с выборкой и css
  • 0

#66 micehide

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

  • Assistent vsupport.club
  • PipPipPip
  • 359 сообщений
Репутация: 124
Мастер

Отправлено 12 February 2012 - 10:27 PM

а что за "гуглить"? я такого не видел
вопрос именно про то, что может кто уже это применял. чтоб не копаться с выборкой и css

Ваш вопрос вполне ясен (про вкладки) и Вам был дан исчерпывающий ответ, если же Вам нужен код, применительный именно к Вашему магазину, то обратитесь к людям, занимающимся доработками за вознаграждение (здесь на форуме вполне возможно заказать подобную доработку)...

"Гуглить" - пользоваться поиском Google.
  • 0

#67 rome_

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

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

Отправлено 17 February 2012 - 12:58 PM

Ничего в голову не приходит кроме того чтоб сделать несколько проверок if else для каждого уровня вложения, хотя уверен что есть вариант значительно проще.


есть решение для неопределенного количества подуровней, файл my_menu3_tpl.html делаешь таким:


{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 $big_categories_tree[h].ExistSubCategories == true}
    {if $smarty.const.CONF_MOD_REWRITE eq 1}#{/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}

    {assign var="oldnumber" value=$big_categories_tree[h].level}
    {/if}
    {/section}

{else}
{$smarty.const.STRING_NO_CATEGORIES}

{/if}

  • 0

#68 natashashukina

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

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

Отправлено 01 March 2012 - 08:48 AM

есть решение для неопределенного количества подуровней, файл my_menu3_tpl.html делаешь таким:


{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 $big_categories_tree[h].ExistSubCategories == true}
    {if $smarty.const.CONF_MOD_REWRITE eq 1}#{/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}

    {assign var="oldnumber" value=$big_categories_tree[h].level}
    {/if}
    {/section}

{else}
{$smarty.const.STRING_NO_CATEGORIES}

{/if}


При таком файле он сразу переходит в первую категорию, (т.е. самую верхнюю каждая категория сразу становится активной, даже если подкатегория раскрылась он переходит в первую нажатую)
  • 0

#69 rome_

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

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

Отправлено 01 March 2012 - 11:19 AM

При таком файле он сразу переходит в первую категорию, (т.е. самую верхнюю каждая категория сразу становится активной, даже если подкатегория раскрылась он переходит в первую нажатую)


проверь имеет ли самая верхняя категория, подкатегории.


{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 $big_categories_tree[h].ExistSubCategories == true}
    {if $smarty.const.CONF_MOD_REWRITE eq 1}#{/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}

    {assign var="oldnumber" value=$big_categories_tree[h].level}
    {/if}
    {/section}

{else}
{$smarty.const.STRING_NO_CATEGORIES}

{/if}


продублировал код который у меня работает, в коде закомментирован код "решение для фиксированного количества подуровней" проверь будет ли он корректно рабоать
только подставь свои классы "last_cat", если у тебя другие названия
  • 0

#70 natashashukina

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

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

Отправлено 01 March 2012 - 01:07 PM

продублировал код который у меня работает, в коде закомментирован код "решение для фиксированного количества подуровней" проверь будет ли он корректно рабоать
только подставь свои классы "last_cat", если у тебя другие названия


Какие именно классы (откуда) подставить ?
вот пример есть категории при нажатии на аксессуары список раскрывается, но при этом сразу перебрасывает на категорию аксессуары и список закрывается? т.е. остальные подкатегории выбрать не получается (не успеваешь) (если не сложно покажи код css)
Изображение
  • 0

#71 rome_

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

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

Отправлено 01 March 2012 - 02:43 PM

мои css

.topnav {
width: 213px;
padding: 40px 28px 25px 0;
font-family: "CenturyGothicRegular", "Century Gothic", Arial, Helvetica, sans-serif;
}
ul.topnav {
padding: 0;
margin: 0;
font-size: 1em;
line-height: 0.5em;
list-style: none;
}
ul.topnav li {}

ul.topnav li a {
line-height: 10px;
font-size: 11px;
padding: 5px 5px;
color: #000;
display: block;
text-decoration: none !important;
font-weight: bolder;
text-align:left;
}
ul.topnav li a:hover {
background-color:#675C7C;
color:white;
}
ul.topnav ul {
margin: 0;
padding: 0;
display: none;
}
ul.topnav ul li {
margin: 0;
padding: 0;
clear: both;
}
ul.topnav ul li a {
padding-left: 10px;
font-size: 11px;
font-weight: normal;
outline:0;
}
ul.topnav ul li a:hover {
background-color:#D3C99C;
color:#675C7C;
}
ul.topnav ul ul li a {
color:#404040;
padding-left: 20px;
}
ul.topnav ul ul ul li a {
color:#404040;
padding-left: 25px;
}
/*ul.topnav ul ul ul ul li a {
color:#BA6717;
padding-left: 30px;
font-weight: bold;
}*/
ul.topnav ul ul li a:hover {
background-color:#D3CEB8;
color:#675C7C;
}
ul.topnav span{
float:right;
}
a.last_cat{
color:#BA6717 !important;
padding-left: 30px !important;
font-weight: bold !important;


не в них проблема, этот код определяет будет ли категория являться ссылкой:

{if $big_categories_tree[h].ExistSubCategories == true}   
{if $smarty.const.CONF_MOD_REWRITE eq 1}#{/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 $smarty.const.CONF_MOD_REWRITE eq 1}#{/if}

в ней, вместо ссылки на категорию подставляется знак "#", у тебе почему то этот код не работает.
посмотри на 5ой странице этой ветки я выложил все инструкцию/файлы, проверь все ли сделано так
проверь работает ли код для фиксированного числа подкатегорий.
  • 0

#72 Swarovski

    Новичок

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

Отправлено 14 May 2012 - 08:29 AM

Java-меню в виде аккордиона

Создание Java меню. Основной задачей было решение проблемы огромного меню с большим количеством категорий и подкатегорий. При открытии даже нескольких пунктов стандартных меню страница неимоверно растягивалась. Преимущества данного компактность, второй бонус – страница не перегружается.
[SPOILER="Рабочий пример"]Lionel.com.ua[/SPOILER]

Картинка меню:
[ATTACH]325.vB[/ATTACH]


Инструкция (не забываем сделать бэкап исходных файлов):


В папке core\tpl\user\ваш_шаблон\blocks\ создаем новый файл my_menu3_tpl.html со следущим содержанием (не забываем его включить в админ панели):
{if $big_categories_tree && $big_categories_tree_count>0}
{assign var="oldnumber" value=0}
[list]
{section name=h loop=$big_categories_tree}
{if $big_categories_tree[h].categoryID != 1}
{if $big_categories_tree[h].level > $oldnumber}
[*]
[list]
{/if}
{if $big_categories_tree[h].level < $oldnumber}

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

[/list] {/section}

{/if}
[*]

{if $big_categories_tree[h].level < 4}
[url="{if%20$smarty.const.CONF_MOD_REWRITE%20eq%201}#{/if}"]{$big_categories_tree[h].name}[/url]
{/if}
{if $big_categories_tree[h].level > 3}
[url="{if%20$smarty.const.CONF_MOD_REWRITE%20eq%201}category_{$big_categories_tree[h].categoryID}.html{else}index.php?categoryID={$big_categories_tree[h].categoryID}{/if}"]{$big_categories_tree[h].name}[/url]
{/if}

{assign var="oldnumber" value=$big_categories_tree[h].level}
{/if}
{/section}

[/list]
{else}

[center]{$smarty.const.STRING_NO_CATEGORIES}[/center]

{/if}


Добавляем в style.css стили (не совсем удачные, подкрутите сами):

.topnav {
	width: 213px;
	padding: 40px 28px 25px 0;
	font-family: "CenturyGothicRegular", "Century Gothic", Arial, Helvetica, sans-serif;
}
ul.topnav {
	padding: 0;
	margin: 0;
	font-size: 1em;
	line-height: 0.5em;
	list-style: none;
}
ul.topnav li {}
ul.topnav li a {
	line-height: 10px;
	font-size: 11px;
	padding: 10px 5px;
	color: #000;
	display: block;
	text-decoration: none;
	font-weight: bolder;
}
ul.topnav li a:hover {
	background-color:#675C7C;
	color:white;
}
ul.topnav ul {
	margin: 0;
	padding: 0;
	display: none;
}

ul.topnav ul li {
	margin: 0;
	padding: 0;
	clear: both;
}

ul.topnav ul li a {
	padding-left: 20px;
	font-size: 10px;
	font-weight: normal;
	outline:0;
}

ul.topnav ul li a:hover {
	background-color:#D3C99C;
	color:#675C7C;
}

ul.topnav ul ul li a {
	color:silver;
	padding-left: 40px;
}

ul.topnav ul ul li a:hover {
	background-color:#D3CEB8;
	color:#675C7C;
}

ul.topnav span{
	float:right;
}



Подключаем Javascript-ы в файл head.tpl.html, добавляем перед тегом следующее:
<script type="text/javascript" src="data/{$smarty.const.TPL}/jquery-1.5.2.min.js"></script>

{literal}

$(document).ready(function() {
    $(".topnav").accordion({
        accordion:false,
        speed: 500,
        closedSign: '[+]',
        openedSign: '[-]'
    });
});

{/literal}  

В папку data\ кладем скрипты из архива (jquery-1.5.2.min.js и scriptbreaker-multiple-accordion-1.js):
[HIDE="1"][ATTACH]326.vB[/ATTACH][/HIDE]
Меню сделано для 5-уровневого дерева каталога товаров. В нем открывается только последняя, вложенная, категория.
[SPOILER="Код брал сдесь"]http://www.scriptbre...-accordion-menu[/SPOILER]
Делал на версии 3.1.2 (другие не пробовал).


Странно, все сделал как написано, но категории отображаются сплошным списком и ниче не работает :(
  • 0

#73 gsm-group

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

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

Отправлено 15 May 2012 - 04:49 PM

Здесь код битый после переустановки форума. Не все теги отабраженны.
  • 0

#74 R.Sergey

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

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

Отправлено 15 May 2012 - 04:52 PM

Сегодня поправлю
  • 0

#75 chasert

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

  • Assistent vsupport.club
  • PipPip
  • 19 сообщений
Репутация: 0
Начинающий
  • ГородТамбов

Отправлено 02 August 2012 - 01:54 PM

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

 {if $big_categories_tree && $big_categories_tree_count>0} {assign var="oldnumber" value=0}[list]
{section name=h loop=$big_categories_tree} {if $big_categories_tree[h].categoryID != 1} {if $big_categories_tree[h].level > $oldnumber}[*]
[list]
{/if} {if $big_categories_tree[h].level < $oldnumber} {section name=w loop=$oldnumber-$big_categories_tree[h].level}
[/list]{/section} {/if}[*][url="{if%20$smarty.const.CONF_MOD_REWRITE%20eq%201}category_{$big_categories_tree[h].categoryID}.html{else}index.php?categoryID={$big_categories_tree[h].categoryID}{/if}"]{$big_categories_tree[h].name}[/url] {assign var="oldnumber" value=$big_categories_tree[h].level} {/if} {/section}
[/list]
{else}
[center]{$smarty.const.STRING_NO_CATEGORIES}[/center]
{/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; }


Скопировал код и стили, но заместо меню отображается блок со сплошным текстом названий категорий.. стили добавлял в конец файла (stylesheet.css), не знаю играет роль.. как исправить?
  • 0

#76 Dbus

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

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

Отправлено 02 August 2012 - 06:11 PM

Скопировал код и стили, но заместо меню отображается блок со сплошным текстом названий категорий.. стили добавлял в конец файла (stylesheet.css), не знаю играет роль.. как исправить?


а что это за [/list], %20$ в коде и теги кривые ? ты что-то не то или не так скопировал
  • 0
502 Bad Gateway

#77 chasert

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

  • Assistent vsupport.club
  • PipPip
  • 19 сообщений
Репутация: 0
Начинающий
  • ГородТамбов

Отправлено 03 August 2012 - 08:09 AM

Код правильный в сообщении не так отобразился. может css, куда копировать? в определенный участок кода или без разницы? два файла stylesheet и style, я копировал в первый.
  • 0

#78 Dbus

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

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

Отправлено 03 August 2012 - 08:36 AM

файла stylesheet и style, я копировал в первый.


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

#79 chasert

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

  • Assistent vsupport.club
  • PipPip
  • 19 сообщений
Репутация: 0
Начинающий
  • ГородТамбов

Отправлено 03 August 2012 - 08:42 AM

stylesheet подключен. есть разница в какой участок кода копировать? ничего не поменялось. http://xn---68-9cdbj...b1a6l.xn--p1ai/ посмотри что получается
  • 0

#80 Dbus

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

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

Отправлено 03 August 2012 - 04:06 PM

дело не стилях, там чето с самим блоком. оно тупо текстом все выводит, без ссылок даже.
  • 0
502 Bad Gateway