PDA

Просмотр полной версии : Меню с условиями


elezeo
01.08.2011, 15:48
Ребята подскажите как реализовать через TS меню с разделителем:
[item 1 | item 2 | item 3 | item 4]
где [ и ] - это общее обрамление
| - это дополнительный разделитель
в коде бы это выглядело так
<div class="menu">
<div class="item">item 1</div>
<div class="divitem"></div>
<div class="item">item 2</div>
<div class="divitem"></div>
<div class="item">item 3</div>
<div class="divitem"></div>
<div class="item">item 4</div>
</div>
---------------------------
у меня в TS написано так
wrapItemAndSub = <div class="item"> | </div>
По идее можно в конце или в начале добавить разделитель
wrapItemAndSub = <div class="item"> | </div><div class="divitem"></div>
Но тогда надо поставить условие, что так надо делать если это не последний элемент.

Вот я и не могу понять как сделать условие для wrap/
Поздскажите, пожалуйста

elezeo
01.08.2011, 19:02
Задача не простая, но решаемая.
Вот код ее реализации

lib.field_topmenu = HMENU
lib.field_topmenu.maxItems = 6 // Ограничиваю 6-ю элементами
lib.field_topmenu.1 = TMENU // Первый уровень
lib.field_topmenu.1 {
expAll=1 // Показать подменю
noBlur=1
NO { // Нормал
stdWrap.cObject = COA // Переопределяю значение в контейнере
stdWrap.cObject {
10 = LOAD_REGISTER // Объект регистрации (ничего не выводит)
10{
topmenuitemindex1.cObject = TEXT //Счетчик элементов меню
topmenuitemindex1.cObject.data = register:topmenuitemindex1
topmenuitemindex1.cObject.wrap = |+1
topmenuitemindex1.prioriCalc = intval
}
20 = TEXT // Титле страницы (пункта меню)
20.field = title // subtitle
}
linkWrap = |
ATagTitle.field = title // subtitle
ATagParams = class="topmenu"
stdWrap.htmlSpecialChars = 1
wrapItemAndSub.stdWrap.cObject = COA // переопределяю это обрамление в контейнере
wrapItemAndSub.stdWrap.cObject{
10 = TEXT // это обрамление будет выводиться всегда
10.value = <div class="item"> | </div>
20 = TEXT // а это добавляется в конце
// при выполнении условия (не последний пункт меню)
20.insertData = 1
//20.value = {register:topmenuitemindex1}?={register:count_menu Items}
20.value = <div class="divitem"></div>
20.if {
value.data = register:topmenuitemindex1
equals.data = register:count_menuItems // это переменная генерируется автоматически и равна количеству элементов в меню
negate=1 // Обратить в Ложь
}
}

}
}



Надеюсь кому-то этот пример пригодиться =)

Андрей Аксенов
02.08.2011, 09:22
По-моему можно и проще, воспользовавшись "хитрым" optionSplit:

lib.field_topmenu = HMENU
lib.field_topmenu.wrap = <div class="menu">|</div>
lib.field_topmenu.1 = TMENU // Первый уровень
lib.field_topmenu.1 {
NO.before = <div class="item">
NO.after = </div><div class="divitem"></div>|*|</div><div class="divitem"></div>|*|</div>
}