PDA

Просмотр полной версии : помогите разобраться с условиями в Ts


Boris
14.04.2006, 00:12
Нужно сделать, так что-бы в 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

Boris
14.04.2006, 14:00
Да ето кусок 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.

Boris
14.04.2006, 17:15
Большое спасибо за ответ!

Да конечно, в plugin я установил оба регистра.
Толко я не понял, куда именно добавить (isTrue = 1) и почему ето выражение всегда = 0 ?
Ведь if должно возвращать True или False
if {
value=SEARCH
equals.data=register:code
negate=1
}
Хотелось бы для себя понять, как точно ето работает, чтобы потом опять на грабли не наступать :)

Boris
14.04.2006, 17:30
И ещё один маленький вопрос.

Как в TS правильно прописать условия для регистров?
Типа: [register:code = value]

Boris
14.04.2006, 19:55
Ещё раз большое спасибо Павел!!!!
Так заработало:

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-ничего не возвращает. Он опредедяет будет или не будет отрабатывать родительская конструкция.

Boris
15.04.2006, 19:10
Ето я понял из доку.
В даном случае родительская конструкция : isTrue=1
Не понятно что происходит с isTrue, если IF определят что родительская конструкция(isTrue) не отрабатывается.

Здесь: subheader_stdWrap.override.if всё понятно: будет переписываться если все условия выполняются(всёравно, что: subheader_stdWrap.override >)

Pavel Antonov
16.04.2006, 00:55
isTrue возвращает пустое значение, что равносильно "Ложь"...

Boris
16.04.2006, 18:21
Спасибо Pavel!
Теперь ясно (я думал, что в етом случае isTrue просто игнорируется)

А как насчёт:
Как в TS правильно прописать условия для регистров?
Типа: [register:code = value]

Pavel Antonov
17.04.2006, 02:38
что вообще имеется в виду?
что за условия для регистров?

Boris
17.04.2006, 12:58
Я имею ввиду, condition в TS, по типу:
[globalVar = TSFE:id = 10]

Только, как ето правильно прописать для 'register' (если вообще возможно)?
[register:code = value]
.............
[end]

Или надо в данном случае работать с userFunc?

Pavel Antonov
17.04.2006, 13:12
Таких конструкций нет. Регистр может меняется за время рендеринга страницы, а условные конструкции на это не расчитаны (как условная компиляция). И UserFunc тут тоже не поможет.


Пользуйтесь ".if" или "CASE"