5.7. if:

現在の条件がすべて満たされた場合(AND'ed)、この関数はtrueを戻す。1つでも条件がfalseの場合、値はfalseを戻す。

戻り値は”.negate”-プロパティにより無効にされる。

プロパティ:

データタイプ:

説明:

デフォルト:

isTrue

str /stdWrap

コンテンツが”true”の場合…(空文字列やゼロではない)

 

isFalse

str /stdWrap

コンテンツが"false"の場合...(空もしくはゼロ)

 

isPositive

int /stdWrap

+ calc

コンテンツが正でない場合、falseを戻す

 

isGreaterThan

value /stdWrap

コンテンツが".value"より大きくない場合falseを戻す

 

isLessThan

value /stdWrap

コンテンツが".value"より小さくない場合falseを戻す

 

equals

value /stdWrap

コンテンツが".value"と等しくない場合、falseを戻す

 

isInList

value /stdWrap

コンテンツがコンマ区切りリスト".value"の中にない場合、falseを戻す。

".value"の中のリストは要素の間にスペースがないかもしれない!!

 

value

value /stdWrap

"value" (上記記述の比較値)

 

negate

boolean

これは終了直前の結果を無効にする。だから、上記のいずれかがtrueを戻せば、すべてのリターンはfalseを戻して終わる!!

 

directReturn

boolean

このプロパティが存在する場合は、この値のtrue又はfalseが戻される。TypoScript定数によりtrue又はfalseを設定するのに使用することができる。constant

 

[tsref:->if]

説明:

“if”関数はtrue又はfalseを戻す非常に奇妙な方法である!注意が必要である!

“if”は通常オブジェクトをレンダリングするか値を戻すかのどちらかを決定するのに使用される(cObjects及びstdWrap参照)

以下、それについて詳述:

関数はtrue又はfalseを戻す。trueかfalseのどちらを戻すかはこの関数のプロパティによる。もし”isTrue=1”を設定したら、結果はtrueである。もし”isTrue.field=header”を設定した場合、$cObj->dataの”header”フィールドが設定されたと時、関数はtrueを戻す!

値を比較したい場合、”.value”-プロパティのベース値を取り込まなければならない。例:

.value = 10
.isGreaterThan = 11

“.isGreaterThan”がベース値である10より大きいので、これはtrueを戻す。

より複雑なものが次である:

.value = 10
.isGreaterThan = 11
.isTrue.field = header
.negate = 1

2つの条件-isGreterThanとisTrueがある。もしどちらもtrueであれば、トータルはtrueとなる(AND)しかし(!)”.negate”-フラグは結果を反転させるので、トータルでのif関数はfalseとなる!

例:

これは、”newUntil”フィールドが現在の日付より少ない日付を持った場合、メニューアイテム上に”NEW”を書くGIFBUILDERオブジェクトである!

...
  30 = TEXT
  30.text = NEW!
  30.offset = 10,10
  30.if {
    value.data = date: U
    isLessThan.field = newUntil
    negate = 1
  }
...