Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   Условные операторы (http://forum.typo3.ru/showthread.php?t=6753)

Lucifer 13.09.2008 19:15

Условные операторы
 
Как использовать условные операторы (if... else) в тупоскрипте?
Есть меню
Код:

lib.menu_1 = HMENU

lib.menu_1.entryLevel = -1
lib.menu_1.1 = TMENU
lib.menu_1.1 {
  NO.allWrap = <div class="menu1-level1-no"> | </div>
  NO.stdWrap.htmlSpecialChars = 1
}

Нужно изменить ентрилевел, если выбраный пункт не содержит в себе подпункты. Нашел свойство IFSUB, только не знаю, как его использовать. Не знаю синтаксиса.

Valery Romanchev 13.09.2008 21:09

условий такого плана в TS нет (entryLevel не stdWrap)
Можно написать пхп код, чтобы сделать..
но наверное задачу можно решить задав корень для данного меню (использовать HMENU тип directory)


Цитата:

lib.nav2 = HMENU
lib.nav2 {
special = directory
entryLevel=1
special.value.data=leveluid:1
#special.value = 140
1 = TMENU
1 {
expAll = 1
noBlur = 1
wrap = <ul>|</ul>
NO.wrapItemAndSub = <li>|</li>
NO.ATagTitle.field = description // title
CUR < .NO
CUR = 1
CUR.wrapItemAndSub = <li class="active">|</li>
ACT=1
ACT.wrapItemAndSub = <li class="active">|</li>
}
}

[treeLevel = 2,3,4,5]
lib.nav2 {
#entryLevel=2
special.value.data=leveluid:2
}
[end]

lib.nav2.stdWrap.ifEmpty.cObject < lib.nav2
lib.nav2.stdWrap.ifEmpty.cObject {
special.value.data=leveluid:1
}

Lucifer 15.09.2008 11:02

Разобрался не со всеми свойствами. Получилость сделать только на последнем уровне вложенности, если трилевел = 3 и ентрилевел = 2. как работает условие, что бы проверять, есть ли подстраницы так и не понял... Как понимаю, это связано со special.value.data?
И нельзя ли сделать что нибудь подобное
Код:

[treeLevel = 2,3,4,5]
lib.menu_1.!IFSUB{
entryLevel=-2
}
[end]

А если делать пхп, в какой переменной лежат пункты меню? С пхп туповскими переменными еще не пользовался :rolleyes:

pomotom 15.09.2008 12:20

нельзя. entryLevel не является свойством TMENU, тем более свойством menuItem.
Можно попытаться сделать что-то вроде:
Код:

menu = HMENU
menu.1 = TMENU
menu.1 {
CUR {
  #сработает если нет потомков у текущей страницы
 
  #отключаем стандартный рендеринг
  stdWrap.override = <span></span>
  doNotLinkIt = 1
 
  #рендерим нужное меню
  allStdWrap {
    preCobject = HMENU
  #здесь задается нужное вам меню


}

}
CURIFSUB {
#сработает если есть потомки

}

}


Lucifer 15.09.2008 12:39

Цитата:

Сообщение от pomotom (Сообщение 21405)
нельзя. entryLevel не является свойством TMENU, тем более свойством menuItem.

Ну а каким образом мне все реализовать? Что бы было универсально для любого уровня вложенности???


Часовой пояс GMT +4, время: 04:56.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot