support (17 Март 2011 - 22:39) писал:
В принципе это сделать можно с помощью каталога категорий выводимых вместо массива "catalog" массивом "catalog_full". Он содержит полное дерево категорий, без скрытия вложенных в не активную ветку категорий, что позволяет делать любые древовидные струкруры категорий, в том числе и выпадающие списки как в примере с mvideo. Код построения дерева категорий мы построим в 3 шага.
Шаг первый. HTML код
Это код вечный его можно будет больше никогда не трогать, подойдет для любых дизайн шаблонов.
Шаг второй. JS код
Как только допишете вот такой javascript код например в файл main.js:
К категориям на которые Вы наводите начнёт дописываться специальный стиль, который позволит отображать вложенные категорий в ту на которую навели курсор. При уходе мышки с этой категории соответственно этот стиль будет убираться и её можно будет легко скрыть.
Шаг третий. CSS стили
Остался один финальный шаг, который будет самым легко настраиваемым. Подобными стилями можно скрыть все вложенные в корневые категории и настроить вид отображения как захочется. Хоть боковым меню, хоть нижним, хоть верхним.
Вот пример CSS стилей для размещения вышеуказанного меню слева на сайте и выдачи списка подкатегорий при наведении на категорию. Вложенность сами понимаете не ограниченная:
Теперь для написания CSS стиля именно для вашего случая, где меню будет вываливаться сверху, лучше всего будет определиться с тем какой дизайн шаблон мы используем и сразу написать css стили для него, дабы не делать лишней работы
В случае с верхнем меню, мы его так же перенесём вбок после определения какой дизайн шаблон требуется изменить.
Шаг первый. HTML код
<!-- Каталог товаров --> {%IFNOT catalog_full_empty%} {%FOR catalog_full%} {% IF catalog_full.FIRST %}<ul id="nav">{% ENDIF %} <li class=" level{catalog_full.LEVEL} nav-{catalog_full.index} {% IF catalog_full.CURRENT %}active{% ELSEIF catalog_full.CURRENT_PARENT %}active{% ENDIF %} {% IF catalog_full.ISSET_SUB %}parent{% ENDIF %} "> <a href="{catalog_full.URL}"><span>{catalog_full.NAME}</span></a> {% IF catalog_full.ISSET_SUB=0 %}</li>{% ENDIF %} {% IF catalog_full.LAST %}{%FOR out%}</ul>{%IFNOT catalog_full.out.LAST%}</li>{%ENDIF%}{%ENDFOR%}{% ENDIF %} {%ENDFOR%} {%ENDIF%} <!-- /Каталог товаров -->
Это код вечный его можно будет больше никогда не трогать, подойдет для любых дизайн шаблонов.
Шаг второй. JS код
Как только допишете вот такой javascript код например в файл main.js:
$(document).ready(function(){ // Действие при наведении на меню категорий, для возможности отображения вложенного подменю $('#nav li').hover( function () { $(this).addClass('over'); }, function () { $(this).removeClass('over'); } ); });
К категориям на которые Вы наводите начнёт дописываться специальный стиль, который позволит отображать вложенные категорий в ту на которую навели курсор. При уходе мышки с этой категории соответственно этот стиль будет убираться и её можно будет легко скрыть.
Шаг третий. CSS стили
Остался один финальный шаг, который будет самым легко настраиваемым. Подобными стилями можно скрыть все вложенные в корневые категории и настроить вид отображения как захочется. Хоть боковым меню, хоть нижним, хоть верхним.
Вот пример CSS стилей для размещения вышеуказанного меню слева на сайте и выдачи списка подкатегорий при наведении на категорию. Вложенность сами понимаете не ограниченная:
#nav{padding:0 0 32px 7px; margin:0; font-size:20px;} /* Все уровни */ #nav li { text-align:left; position:relative; } #nav li.over { z-index:999; } #nav li.parent {} #nav li a { display:block; text-decoration:none; } #nav li a:hover { text-decoration:none; } #nav li a span { display:block; white-space:nowrap; cursor:pointer; } #nav li ul a span { white-space:normal; } /* 1й уровень вложенности */ #nav li {} #nav li a{padding:0 0 0; font-weight:bold; color:#CDCDCD; line-height:normal;} #nav li a:hover { color:#333333; } #nav li.over a, #nav li.active a { color:#333333; } /* 2й уровень вложенности */ #nav ul { position:absolute; width:15em; top:0px; left:-10000px; border:0; padding:0; background:#B2B2B2; font-size:12px;} #nav ul li { float:none; border-bottom:1px solid #FFF; } #nav ul li.last { border-bottom:0; } #nav ul li a { float:none; padding:3px 9px; font-weight:normal; color:#050505 !important; } #nav ul li a:hover { color:#FFF !important; background:#333333; } #nav ul li.active a, #nav ul li.over a { color:#FFF !important; background:#333333; } /* 3й и последующие уровни... Можно писать таких стилей сколько угодно, до бесконечности... */ #nav ul ul { top:0px; } /* Видимое меню */ #nav li.over ul { left:200px; } #nav li.over ul li.over ul { left:15em; } #nav li.over ul ul { left:-10000px; } #nav li.over .indent-class{margin-left:230px;} /********** Navigation > */
Теперь для написания CSS стиля именно для вашего случая, где меню будет вываливаться сверху, лучше всего будет определиться с тем какой дизайн шаблон мы используем и сразу написать css стили для него, дабы не делать лишней работы
В случае с верхнем меню, мы его так же перенесём вбок после определения какой дизайн шаблон требуется изменить.
Есть ошибка в коде. id nav выводится много раз в цикле.