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

bitAnd

bitAnd
Type
value / stdWrap

Returns true, if the value is part of the bit set.

Example

TYPO3 uses bits to store radio and checkboxes via TCA, bitAnd can be used to test against these fields.

EXT:site_package/Configuration/TypoScript/setup.typoscript
hideDefaultLanguageOfPage = TEXT
hideDefaultLanguageOfPage {
    value = 0
    value {
        override = 1
        override.if {
            bitAnd.field = l18n_cfg
            value = 1
        }
    }
}
Copied!

contains

contains

contains
Type
value / stdWrap

Returns true, if the content contains value.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
# 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

directReturn

directReturn
Type
boolean

If this property exists, no other conditions will be checked. Instead the true/false of this value is returned. Can be used to set true/false with a TypoScript constant.

endsWith

endsWith

endsWith
Type
value / stdWrap

Returns true, if the content ends with value.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
# 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

equals

equals
Type
value / stdWrap

Returns true, if the content is equal to value.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
if.equals = POST
if.value.data = GETENV:REQUEST_METHOD
Copied!

isFalse

isFalse

isFalse
Type
string / stdWrap

If the content is "false", which is empty or zero.

isGreaterThan

isGreaterThan

isGreaterThan
Type
value / stdWrap

Returns true, if the content is greater than value.

isInList

isInList

isInList
Type
value / stdWrap

Returns true, if the content is in the comma-separated list .value.

Note: The list in value may not have spaces between elements!

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
if.isInList.field = uid
if.value = 1,2,34,50,87
Copied!

This returns true, if the uid is part of the list in value.

isLessThan

isLessThan

isLessThan
Type
value / stdWrap

Returns true, if the content is less than value.

isNull

isNull

isNull
Type
stdWrap

If the resulting content of the stdWrap is null (NULL type in PHP).

Since null values cannot be assigned in TypoScript, only the stdWrap features are available below this property.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
page.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

isPositive

isPositive
Type
integer / stdWrap + Calc

Returns true, if the content is positive.

isTrue

isTrue

isTrue
Type
string / stdWrap

If the content is "true", which is not empty string and not zero.

negate

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

startsWith

startsWith
Type
value / stdWrap

Returns true, if the content starts with value.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
page.10 = TEXT
page.10 {
    value = Your editor added the magic word in the header field
    htmlSpecialChars = 1
    if.value.data = DB:tt_content:1234:header
    if.startsWith = Bazinga
}
Copied!

value

value

value
Type
value / stdWrap

The value to check. This is the comparison value mentioned above.

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 isTrue = 1 then the result is true. If you set isTrue.field = header, the function returns true if the field "header" in $cObj->data is set!

If you want to compare values, you must load a base-value in the value-property. Example:

EXT:site_package/Configuration/TypoScript/setup.typoscript
page.10.value = 10
page.10.isGreaterThan = 11
Copied!

This would return true because the value of isGreaterThan is greater than 10, which is the base-value.

More complex is this:

EXT:site_package/Configuration/TypoScript/setup.typoscript
page.10 {
  value = 10
  isGreaterThan = 11
  isTrue.field = header
  negate = 1
}
Copied!

There are two conditions - isGreaterThan and isTrue. 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!

EXT:site_package/Configuration/TypoScript/setup.typoscript
30 = TEXT
30.text = NEW!
30.offset = 10,10
30.if {
  value.data = date: U
  isLessThan.field = newUntil
  negate = 1
}
Copied!