PDA

Просмотр полной версии : Генерарция иерархического меню


tram
02.06.2011, 01:06
Доброго времени суток.
Помогите, пожалуйста, с созданием tsconfig-а для генерации иерархического меню.

Суть вопроса - необходимо, что б меню имело следующую структуру:
<div class="l1">Element1 Level1</div>
<div class="l1">Element2 Level1</div>
<div class="l1">Element3 Level1
<div class="l2">Elem1 Level2</div>
<div class="l2">Elem2 Level2</div>
</div>
<div class="l1">Element4 Level1</div>

Но мне упорно выдет структуру:
<div class="l1">Element1 Level1</div>
<div class="l1">Element2 Level1</div>
<div class="l1">Element3 Level1</div>
<div class="l2">Elem1 Level2</div>
<div class="l2">Elem2 Level2</div>
<div class="l1">Element4 Level1</div>

Пересмотрев различные примеры и документацию нашел только одно решение: принять структуру как есть и выстраивать отображение с помощью css.
Но данное решение не подходит, это во первых.
А во вторых - чувствую что нужное решение есть, а найти не могу.

Буду признателен за помощь.

dmartynenko
02.06.2011, 17:55
Из какой структуры страниц вы генерируете меню? Приведите пример, скриншот.

tram
03.06.2011, 03:14
Структура - самая что ни на есть простая:
Some root level page
Element1 level1 page
Element11 level2 page
Element12 level2 page
Element2 level1 page
Element21 level2 page
Element22 level2 page
Element3 level1 page
Element31 level2 page
Element32 level2 page


Сократил и упростил ts-файл по построению меню - в принципе базовая версия большинства примеров получилась. Можем от него отталкиваться.
Его содержание:


[GLOBAL]

page.20.subparts.LEFTMENU >

page.20.subparts {
LEFTMENU = COA
LEFTMENU {
10 = HMENU
10 {
entryLevel = 1
1 = TMENU
1 {
NO {
allStdWrap.innerWrap (
<div class="l1">|</div>
)
}
ACT < .NO
ACT = 1
ACT {
ATagParams = class="current"
}
}
2 = TMENU
2 {
NO {
allStdWrap.innerWrap (
<div class="l2">|</div>
)
}
ACT = 1
ACT {
ATagParams = class="current"
}
}
}
}
}

[GLOBAL]

filippoff
04.06.2011, 01:50
используйте wrapItemAndSub для элементов с подменю, либо wrap для всего меню
а вообще, ваше меню с вложенными дивами просится на переделку в список.

tram
05.06.2011, 16:19
Спасибо за ответ, но wrapItemAndSub и wrap делают нужную обертку, но отнюдь не помогают с местом расположения елементов.


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

Да, так и есть :) Меню должен формировать с вложенными один в другой списками ul & li без ограничения по уровню вложенности.
То есть конечный результат должен таким быть:
<ul>
<li class="l1">Element1 Level1</li>
<li class="l1">Element2 Level1</li>
<li class="l1">Element3 Level1
<ul>
<li class="l2">Elem1 Level2</li>
<li class="l2">Elem2 Level2</li>
</ul>
</li>
<li class="l1">Element4 Level1</li>
</ul>
Но показалось, что так больше запутаю своим вопросом

filippoff
06.06.2011, 01:26
вот здесь такая схема: http://cobra-garant.ru

lib.mainMenu.10 = HMENU
lib.mainMenu.10 {
entryLevel = 0
#expAll = 1
wrap = <ul class="sf-menu">|</ul>
1 = TMENU
1 {
noBlur=1
expAll = 1

NO {
wrapItemAndSub = <li>|</li>
#doNotLinkIt = 1
ATagParams = onClick="return false;"
}

ACT = 1
ACT {
wrapItemAndSub = <li class="current">|</li>
ATagParams = onClick="return false;"
}
}
2 = TMENU
2 {
noBlur=1
expAll = 1
wrap = <ul>|</ul>
NO {
wrapItemAndSub = <li>|</li>
}

ACT = 1
ACT {
wrapItemAndSub = <li class="current">|</li>
}
}
}

tram
07.06.2011, 00:43
Вуаля!!!
Уважаемый filippoff, премного благодарен!
Земля таки крутится, а меню выстроилось как нужно :)