Project

General

Profile

Actions

Bug #96561

closed

Site configuration value can't be evaluated in TypoScript if condition

Added by Bastian Stargazer over 2 years ago. Updated over 2 years ago.

Status:
Closed
Priority:
Should have
Assignee:
-
Category:
TypoScript
Target version:
Start date:
2022-01-17
Due date:
% Done:

0%

Estimated time:
TYPO3 Version:
10
PHP Version:
7.4
Tags:
site-configuration, typoscript
Complexity:
Is Regression:
Sprint Focus:

Description

We have a site-config option to en-/disable something:

xxSomethingEnabled: true // or:
xxSomethingEnabled: false

This value should be used in a TypoScript if-condition e.g. to include some JavaScript inside the header (here we're just setting some text as example):

page {
  headerData {
    # test 1: this text string should be printed if the setting is enabled (true)
    10 = TEXT
    10.if.isTrue = site:xxSomethingEnabled
    10.data = site:xxSomethingEnabled
    10.wrap = From 10, the value of xxSomethingEnabled is: |

    # test 2: this text string should be printed if the setting is disabled (false)
    20 = TEXT
    20.if {
      value = 1
      equals = site:xxSomethingEnabled
      negate = 1
    }
    20.data = site:xxSomethingEnabled
    20.wrap = From 20, the value of xxSomethingEnabled is: |
  }
}

Setting 1:
The site-configuration holds xxSomethingEnabled: false

Given output:
From 10, the value of xxSomethingEnabled is:
From 20, the value of xxSomethingEnabled is:

Expected output:
Only "From 20, the value of xxSomethingEnabled is:1" should be printed, because the site option is false but it's negated in TypoScript

Setting 2:
The site-configuration holds xxSomethingEnabled: true

Given output:
From 10, the value of xxSomethingEnabled is:1
From 20, the value of xxSomethingEnabled is:1

Expected output:
Only "From 10, the value of xxSomethingEnabled is:1" should be printed, because the site option is true

It's clearly to see that the values from the site-configuration does not get properly evaluated in TypoScript expressions. Just by gut-feeling, it might be a reason of a falsely type conversion from site-config "false" (string) to 0 (integer), but TypoScript might expect a "0" (string), because the above script works like expected if we using a TypoScript constant set to 1 or 0 like {$test.xxSomethingEnabled}.

Actions #1

Updated by Bastian Stargazer over 2 years ago

Solution

We was missing the fact that getText values only works with the ''.data'' attribute (see https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/DataTypes/Properties/GetText.html#site thanks Mathias!).

Changing the above example works like expected:


page {
  headerData {
    10 = TEXT
    10.if.isTrue.data = site:xxSomethingEnabled
    10.data = site:xxSomethingEnabled
    10.wrap = From 10, the value of xxSomethingEnabled is: |
  }
}

Output: Nothing if false, and "From 10, the value of xxSomethingEnabled is: 1" if true

Issue can be closed.

Actions #2

Updated by Mathias Brodala over 2 years ago

  • Status changed from New to Closed
Actions

Also available in: Atom PDF