Хак для Меню shop | video

+13
1.67K
Дополнение к модулю меню для раскрытия дочерних пунктов меню у Шопа, Видео и Мапс и вообще..
Скрипт разворачивает дерево меню от текущей страницы selected — до родительской категории.
Иллюстрация


Сделал давно, все никак не выкладывал, так как думал что много правок внес, на самом деле должно работать и у вас,
главное чтобы были классы cat_plus и cat_minus у пунктов меню, в мапе их нет, но можно добавить думаю

идем в модуль шопа и по аналогии в модули _tree других компонентов
/templates/_default_/modules/mod_inshop_tree.tpl

и добавим внизу файла код

Прошу прощения, но кроме как выложить весь код mod_inshop_tree.tpl меню — вряд ли получится,
в общем смысл в том чтобы раскрывать меню до пункта с классом selected, а класс selected присваивается текущей посещенной странице
  1.  
  2. <nav>
  3. <ul id="inshop_tree">
  4.  
  5. {foreach key=key item=item from=$items}
  6.  
  7. {if $item.NSLevel < $last_level}
  8. {math equation="x - y" x=$last_level y=$item.NSLevel assign="tail"}
  9. {section name=foo start=0 loop=$tail step=1}
  10. </ul></li>
  11. {/section}
  12. {/if}
  13.  
  14. {if $item.NSRight - $item.NSLeft == 1}
  15.  
  16. {if $item.id != $current_id}
  17. <li class="cat_none">
  18. <span class="folder"><a href="/{$item.seolink}">{$item.title}</a></span>
  19. {else}
  20. <li><span class="selected">{$item.title}</span>
  21. {/if}
  22.  
  23. </li>
  24. {else}
  25. {if $item.id != $current_id}
  26. <li>
  27. <span class="cat_plus" style="{if $cfg.expand_all}display:none;{/if}"></span>
  28. <span class="cat_minus" style="{if !$cfg.expand_all}display:none;{/if}"></span>
  29. <span class="folder"><a href="/{$item.seolink}">{$item.title}</a></span>
  30. {else}
  31. <li class="cat_selected">
  32. <span class="cat_plus" style="display:none;"></span>
  33. <span class="cat_minus" style="display:block;"></span>
  34. <span class="cat_selected">{$item.title}</span>
  35. {/if}
  36. <ul class="subcat">
  37. {/if}
  38. {assign var="last_level" value=$item.NSLevel}
  39.  
  40. {/foreach}
  41.  
  42. </ul>
  43. </nav>
  44.  
  45. <script type="text/javascript">
  46.  
  47. {if !$cfg.expand_all}
  48. {literal}
  49. $('#inshop_tree li .selected').parents('li').addClass('cat_selected');
  50. $('#inshop_tree li .cat_selected').parents('li').addClass('cat_selected');
  51. $('#inshop_tree li > ul').hide();
  52. $('#inshop_tree li.cat_selected > ul').show();
  53. $('#inshop_tree li.cat_selected span.cat_plus').css({ display: "none" });
  54. $('#inshop_tree li.cat_selected span.cat_minus').css({ display: "block" });
  55.  
  56. $('#inshop_tree li.cat_selected li span.cat_plus').css({ display: "block" });
  57. $('#inshop_tree li.cat_selected li span.cat_minus').css({ display: "none" });
  58.  
  59. $('#inshop_tree li.cat_selected li.cat_selected span.cat_plus').css({ display: "none" });
  60. $('#inshop_tree li.cat_selected li.cat_selected span.cat_minus').css({ display: "block" });
  61.  
  62. {/literal}
  63. {/if}
  64.  
  65. {literal}
  66.  
  67. $('.cat_plus').click(function(){
  68. $(this).hide();
  69. $(this).parent('li').find('.cat_minus').eq(0).show();
  70. $(this).parent('li').find('ul').eq(0).show();
  71. });
  72.  
  73. $('.cat_minus').click(function(){
  74. $(this).hide();
  75. $(this).parent('li').find('.cat_plus').eq(0).show();
  76. $(this).parent('li').find('ul').hide();
  77. $(this).parent('li').find('ul').find('.cat_minus').hide();
  78. $(this).parent('li').find('ul').find('.cat_plus').show();
  79. });
  80.  
  81.  
  82. {/literal}
  83. </script>
  84. {add_css file='templates/_default_/css/tree.css'}
  85.  
В данном коде правим ссылку до вашего компонента например для shopa находим две href ссылки типа
<span class="folder"><a href="/{$item.seolink}">{$item.title}</a></span> и правим на
<span class="folder"><a href="/shop/{$item.seolink}">{$item.title}</a></span>

… соответственно /video и /maps также и вроде как говорят статьи (или без изменений или добавляем /content)

-3
shaman888 shaman888 8 лет назад #
Я бухой и не прогер, и не понимаю что именно делает скрипт. Будьте добры опишите. То что я вижу на картинуе это CSS
+3
mihalich mihalich 8 лет назад #
То что я вижу на картинуе это CSS
Действительно бухой smile начало кода <script type="text/javascript"> о чём то говорит?))
+2
shaman888 shaman888 8 лет назад #
я вчера перебрал походу crazy
0
scanread scanread 8 лет назад #
Это же скрипт с модуля "Категории статей". Для сворачивания/разворачивания основных категорий. hoho
0
Bubble Gumoff Bubble Gumoff 8 лет назад #
Что за модуль?
0
Bubble Gumoff Bubble Gumoff 8 лет назад #
Да вы правы, не то выложил, поменял код
0
Bubble Gumoff Bubble Gumoff 8 лет назад #
Скрипт должен разворачивать меню от потомка до родительской категории, то есть при переходе на страницы потомков оно будет раскрытым до самого потомка
0
Александр Александр 8 лет назад #
Если правильно Вас понял, то очень полезная доработка, только это все таки не меню а модуль с выводом категорий шопа и видео?

З ы Кстати всех спрашиваю и никто не отвечает, может сейчас помогут, как сделать так ( подправить модуль) чтобы в модуль фильтр товаров шопа можно было вывести все что есть в категориях и не привязываться к странице категории товара, а скажем на главную страницу сайта?)
0
Bubble Gumoff Bubble Gumoff 8 лет назад #
а модуль с выводом категорий шопа - это не меню?! ))
0
Bubble Gumoff Bubble Gumoff 8 лет назад #
ну, если правильно понял, тогда для всех категорий в фильтр выводить одни и теже - все характеристики
0
Bubble Gumoff Bubble Gumoff 8 лет назад #
Вообще да - это модуль меню, который подойдет для всех компонентов

Еще от автора

Приватность профиля - никому не показывать (только мне)
В 1.10.3 Понадобилось не показывать данные профиля пользователя никому. Оказалось все просто.
Кнопка плюс минус один Instantshop
Решил прикрутить увеличение - уменьшение цифры товара для попадания в Корзину заказа
Убрать название компонента из Урл (URL) 1.10
Решил записать решение найденное на форуме в блоги, понял что в базовом комплекте 1.10.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.