Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   помогите разобраться с условиями в Ts (http://forum.typo3.ru/showthread.php?t=1305)

Boris 14.04.2006 00:12

помогите разобраться с условиями в 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

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 >)


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

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