if¶
Allows you to check multiple conditions.
This function returns true, if all of the present conditions are met (they are connected with an "AND", a logical conjunction). If a single condition is false, the value returned is false.
The returned value may still be negated by the negate property.
There is no else property available. The "else" branch of an "if" statement is a missing feature. You can implement a workaround by a logic based on the Properties for overriding and conditions.
Simple "if empty use different value" conditions for record data can be built with the TypoScript // (double slash) fallback operator.
Also check the explanations and the examples further below!
Properties¶
bitAnd¶
-
bit
¶And -
- Type
- value / stdWrap
Returns true, if the value is part of the bit set.
ExampleTYPO3 uses bits to store radio and checkboxes via TCA,
bit
can be used to test against these fields.And hideDefaultLanguageOfPage = TEXT hideDefaultLanguageOfPage { value = 0 value { override = 1 override.if { bitAnd.field = l18n_cfg value = 1 } } }
Copied!
contains¶
New in version 12.1
-
contains
¶ -
- Type
- value / stdWrap
Returns true, if the content contains
value
.Example# Add a span tag before the page title if the page title # contains the string "media" page.10 = TEXT page.10 { data = page:title htmlSpecialChars = 1 prepend = TEXT prepend { value = <span class="icon-video"></span> if.value.data = page:title if.contains = Media } outerWrap = <h1>|</h1> }
Copied!
directReturn¶
endsWith¶
New in version 12.1
-
ends
¶With -
- Type
- value / stdWrap
Returns true, if the content ends with
value
.Example# Add a footer note, if the page author ends with "Kott" page.100 = TEXT page.100 { value = This is an article from Benji htmlSpecialChars = 1 if.value.data = page:author if.endsWith = Kott wrap = <footer>|</footer> }
Copied!
equals¶
isFalse¶
isGreaterThan¶
isInList¶
isLessThan¶
isNull¶
-
is
¶Null -
- Type
- stdWrap
If the resulting content of the
std
is null (Wrap NULL
type in PHP).Since null values cannot be assigned in TypoScript, only the
std
features are available below this property.Wrap Examplepage.10 = COA_INT page.10.10 = TEXT page.10.10 { stdWrap.if.isNull.field = description value = No description available. }
Copied!This example returns "No description available.", if the content of the field "description" is
NULL
.
isPositive¶
isTrue¶
negate¶
-
negate
¶ -
- Type
- boolean
- Default
- 0
This property is checked after all other properties. If set, it negates the result, which is present before its execution.
So if all other conditions, which were used, returned true, with this property the overall return ends up being false. If at least one of the other conditions, which were used, returned false, the overall return ends up being true.
startsWith¶
New in version 12.1
value¶
Explanation¶
The "if"-function is a very odd way of returning true or false! Beware!
"if" is normally used to decide whether to render an object or to return a value (see the Content Objects (cObject) and stdWrap).
Here is how it works:
The function returns true or false. Whether it returns true or false
depends on the properties of this function. Say if you set is
then the result is true. If you set is
, the
function returns true if the field "header" in $c
is set!
If you want to compare values, you must load a base-value in the
value
-property. Example:
page.10.value = 10
page.10.isGreaterThan = 11
This would return true because the value of is
is
greater than 10, which is the base-value.
More complex is this:
page.10 {
value = 10
isGreaterThan = 11
isTrue.field = header
negate = 1
}
There are two conditions - is
and is
.
If they are both true, the total is true (both are connected with an AND).
BUT(!) then the result of the function in total would be false because the
negate
-flag inverts the result!
Examples¶
This is a GIFBUILDER object that will write "NEW" on a menu-item if the field "newUntil" has a date less than the current date!
30 = TEXT
30.text = NEW!
30.offset = 10,10
30.if {
value.data = date: U
isLessThan.field = newUntil
negate = 1
}