Просмотр полной версии : помогите разобраться с условиями в Ts
Нужно сделать, так что-бы в ListView:
1.при recordcount<10 вместо header выводилось содержимое bodytext,
если боьше 10, то стандартно - header.
2. есле в режиме поиска (code=SEARCH) то всегда header, не зависимо от верхнего условия
Первое условие с етим кодом работает:
subheader_stdWrap.override.field = bodytext
subheader_stdWrap.override.if {
value < 10
isLessThan.data = register:recordCount
}
Проблема как реализовать оба условия
Пробывал так, но безрезультатно
subheader_stdWrap.override.field = bodytext
subheader_stdWrap.override.if {
value < 10
isLessThan.data = register:recordCount
isTrue.if {
value=SEARCH
equals.data=register:code
negate=1
}
}
Хотя не понимаю почему, ведь в TS-Ref написано что isTrue имеет тип stdWrap
Помогите пожалуйста разобраться.
Pavel Antonov
14.04.2006, 01:46
Если это крик души... то искрене сочуствуем. :(
А если хотите что бы помогли, то может хотя бы скажите где проблема?
Из далека похоже на плагин, даже наверно на tt_news...но кто его знает... :D
Дылгеров Ц.В.
14.04.2006, 07:07
разве в if можно ставить value < ? зачем тогда isLess
Да ето кусок TS из tt_news
В коде читай value = 10 (описка )
Проблему вроде-бы описал, как заставить что-бы срабатывали оба условия?
Pavel Antonov
14.04.2006, 15:21
Теперь яснее...
Я так же надеюсь что соответсвующие используемые регистры Вами предварительно устанавливаются...
На мой взгля проблема есть тут:
isTrue.if {
value=SEARCH
equals.data=register:code
negate=1
}
Этот код всегда = 0, так как нет никакого значения у самого isTrue. Добавьте isTrue = 1.
Большое спасибо за ответ!
Да конечно, в plugin я установил оба регистра.
Толко я не понял, куда именно добавить (isTrue = 1) и почему ето выражение всегда = 0 ?
Ведь if должно возвращать True или False
if {
value=SEARCH
equals.data=register:code
negate=1
}
Хотелось бы для себя понять, как точно ето работает, чтобы потом опять на грабли не наступать :)
И ещё один маленький вопрос.
Как в TS правильно прописать условия для регистров?
Типа: [register:code = value]
Ещё раз большое спасибо Павел!!!!
Так заработало:
subheader_stdWrap.override.field = bodytext
subheader_stdWrap.override.if {
value < plugin.tt_news.pageBrowser.maxPages
isLessThan.data = register:productCount
isTrue.if {
value=SEARCH
equals.data=register:pluginCode
negate=1
}
isTrue=1
}
Но честно говоря_ не совсем понимаю логику:(
Ето значит, что по default я устанавливаю isTrue=1, и толко кода условие после if - falshe, cрабатывает isTrue=0 ?
Pavel Antonov
15.04.2006, 13:22
Чтобы не было вопросов - читайте документацию!
if-ничего не возвращает. Он опредедяет будет или не будет отрабатывать родительская конструкция.
Ето я понял из доку.
В даном случае родительская конструкция : isTrue=1
Не понятно что происходит с isTrue, если IF определят что родительская конструкция(isTrue) не отрабатывается.
Здесь: subheader_stdWrap.override.if всё понятно: будет переписываться если все условия выполняются(всёравно, что: subheader_stdWrap.override >)
Pavel Antonov
16.04.2006, 00:55
isTrue возвращает пустое значение, что равносильно "Ложь"...
Спасибо Pavel!
Теперь ясно (я думал, что в етом случае isTrue просто игнорируется)
А как насчёт:
Как в TS правильно прописать условия для регистров?
Типа: [register:code = value]
Pavel Antonov
17.04.2006, 02:38
что вообще имеется в виду?
что за условия для регистров?
Я имею ввиду, condition в TS, по типу:
[globalVar = TSFE:id = 10]
Только, как ето правильно прописать для 'register' (если вообще возможно)?
[register:code = value]
.............
[end]
Или надо в данном случае работать с userFunc?
Pavel Antonov
17.04.2006, 13:12
Таких конструкций нет. Регистр может меняется за время рендеринга страницы, а условные конструкции на это не расчитаны (как условная компиляция). И UserFunc тут тоже не поможет.
Пользуйтесь ".if" или "CASE"
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot