Вход

Просмотр полной версии : Сложне меню + javascript


El_desperado
19.06.2009, 16:41
Есть большое меню страниц такого вида:

1 уровень
2 уровень
3 уровень
3 уровень
3 уровень
2 уровень
2 уровень
3 уровень
3 уровень
1 уровень
2 уровень
3 уровень
3 уровень

Нужно динамически добавить уникальный id для каждого блока уровня следующим образом:

1 уровень
<div id="уникальный id для этого блока 2го уровня">
2 уровень
<div id="уникальный id для этого блока 3го уровня">
3 уровень
3 уровень
3 уровень
</div>
2 уровень
2 уровень
<div id="уникальный id для этого блока 3го уровня">
3 уровень
3 уровень
</div>
</div>
1 уровень
<div id="уникальный id для этого блока 2го уровня">
2 уровень
<div id="уникальный id для этого блока 3го уровня">
3 уровень
3 уровень
</div>
</div>

Код TS который уже есть:
lib.menu = COA
lib.menu {
stdWrap.insertData = 1
20 = HMENU
20.special = directory
20.special.value = 8
20.1 = TMENU
20.1 {
expAll = 1
NO.allWrap = <span class="cat_first_level_no"> | <br></span>
NO.stdWrap.htmlSpecialChars = 1
ACT = 1
ACT.stdWrap.htmlSpecialChars = 1
ACT.allWrap = <span class="cat_first_level_no"> | <br></span>
}
20.2 = TMENU
20.2 {
wrap = <div id="{field:header}">|</div>
expAll = 1
NO.allWrap = <span class="cat_second_level_no"> | <br></span>
NO.stdWrap.htmlSpecialChars = 1
ACT = 1
ACT.stdWrap.htmlSpecialChars = 1
ACT.allWrap = <span class="cat_second_level_no"> | <br></span>
}
20.3 = TMENU
20.3 {
wrap = <div id="{field:header}">|</div>
NO.allWrap =<span class="cat_third_level_no"> | <br></span>
NO.stdWrap.htmlSpecialChars = 1
ACT = 1
ACT.stdWrap.htmlSpecialChars = 1
ACT.allWrap = <span class="cat_third_level_no"> | <br></span>
}
}

Делается это для того что бы можно было сворачивать и разворачивать меню при помощи javascript-a.

Как это можно реализовать? И можно ли вообще? Уже весь мозг себе сломал решая эту задачу :(

Lucifer
19.06.2009, 18:07
Я использовал stdWrap2.dataWrap для js меню. тут пример с jquery (http://forum.typo3.biz/showthread.php?p=24310#post24310)
Один недостаток - stdWrap2 работает только с NO. У меня не получилось сделать с ACT.

El_desperado
30.06.2009, 07:13
Спасибо за помощь! Решение найдено :) Выглядит оно так:

lib.menu = COA
lib.menu {
stdWrap.insertData = 1
20 = HMENU
20.special = directory
20.special.value = 8
20.1 = TMENU
20.1 {
expAll = 1
NO.allWrap = <span class="cat_first_level_no"> | <br></span>
NO.stdWrap.htmlSpecialChars = 1
ACT = 1
ACT.stdWrap.htmlSpecialChars = 1
ACT.allWrap = <span class="cat_first_level_no"> | <br></span>
}
20.2 = TMENU
20.2 {
expAll = 1
NO.stdWrap2.dataWrap = <div class="cat_second_level_no"><a href="index.php?id={field:uid}" onfocus="blurLink(this);">|</a><br></div><div>
NO.stdWrap.htmlSpecialChars = 1
NO.doNotLinkIt = 1
ACT = 1
ACT.stdWrap.htmlSpecialChars = 1
ACT.doNotLinkIt = 1
ACT.stdWrap2.dataWrap = <div class="cat_second_level_no"><a href="index.php?id={field:uid}" onfocus="blurLink(this);">|</a><br></div><div>
}
20.3 = TMENU
20.3 {
expAll = 1
wrap = |</div>
NO.allWrap =<span class="cat_third_level_no"> | <br></span>
NO.stdWrap.htmlSpecialChars = 1
ACT = 1
ACT.stdWrap.htmlSpecialChars = 1
ACT.allWrap = <span class="cat_third_level_no"> | <br></span>
}
}

Красным выделен блок оборачивающий 3-ий уровень меню именно так как показано на схеме выше.
Надеюсь кому то этот прием пригодится! :)

Lucifer
30.06.2009, 11:20
А stdWrap2 заработал в ACT? У меня не работал :(

El_desperado
30.06.2009, 13:45
Похоже что заработал.
Кстати. Забыл добавить что в таком меню не работает RealUrl так как ссылки писаные в ручную :(