Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community |
01.08.2011, 15:48 | #1 |
Продвинутый
Регистрация: 05.07.2011
Адрес: Россия, Интернет
Сообщений: 69
|
Меню с условиями
Ребята подскажите как реализовать через 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/ Поздскажите, пожалуйста |
01.08.2011, 19:02 | #2 |
Продвинутый
Регистрация: 05.07.2011
Адрес: Россия, Интернет
Сообщений: 69
|
Задача не простая, но решаемая.
Вот код ее реализации Код:
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_menuItems} 20.value = <div class="divitem"></div> 20.if { value.data = register:topmenuitemindex1 equals.data = register:count_menuItems // это переменная генерируется автоматически и равна количеству элементов в меню negate=1 // Обратить в Ложь } } } } |
02.08.2011, 09:22 | #3 |
Senior Member
|
По-моему можно и проще, воспользовавшись "хитрым" 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> } |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Двухуровневое меню в разных div | vip1321 | Общие вопросы | 5 | 03.05.2011 10:54 |
Рендеринг меню в таблицу | AleXUnder | Общие вопросы | 3 | 26.03.2009 17:55 |
Создать ещё одно меню, как? | djolejek | Общие вопросы | 6 | 03.12.2008 17:29 |
Разметка каскадного вложенного меню в TemplaVoila | maaboo | Общие вопросы | 7 | 27.07.2008 17:11 |
Меню из подстраниц | Grank | Общие вопросы | 6 | 31.01.2005 18:46 |