Diese Frage wurde schon einmal StackOverflow behandelt:
https://stackoverflow.com/questions/75769094/check-extension-installed-in-typo3-v11-typoscript-condition
Von Haus aus bieten die Conditions diese Funktion nicht an und man kann auch keine UserFunc direkt mehr aufrufen.
Man kann aber die Symfony ExpressionLanguage erweitern. Wie das geht steht hier:
https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/SymfonyExpressionLanguage/Index.html#additional-variables
Wenn Du also prüfen willst, ob eine Extension installiert ist, dann musst Du folgende Implementierung vornehmen:
Ext:my_sitepackage/Configuration/ExpressionLanguage.php
<?php
return [
'typoscript' => [
\VENDOR\MySitepackage\ExpressionLanguage\CustomTypoScriptConditionProvider::class,
]
];
EXT:my_sitepackage/Classes/ExpressionLanguage/CustomTypoScriptConditionProvider.php
<?php
namespace VENDOR\MySitepackage\ExpressionLanguage;
use TYPO3\CMS\Core\ExpressionLanguage\AbstractProvider;
class CustomTypoScriptConditionProvider extends AbstractProvider
{
public function __construct()
{
$this->expressionLanguageProviders = [
ExtensionIsLoadedFunctionsProvider::class,
];
}
}
EXT:my_sitepackage/Classes/ExpressionLanguage/ExtensionIsLoadedFunctionsProvider.php
<?php
namespace VENDOR\MySitepackage\ExpressionLanguage;
use Symfony\Component\ExpressionLanguage\ExpressionFunction;
use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface;
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
class ExtensionIsLoadedFunctionsProvider implements ExpressionFunctionProviderInterface
{
public function getFunctions(): array
{
return [
$this->getWebserviceFunction(),
];
}
protected function getWebserviceFunction(): ExpressionFunction
{
return new ExpressionFunction('isLoaded', function () {}, function ($existingVariables, $extKey) {
return ExtensionManagementUtility::isLoaded($extKey);
});
}
}
Und dann kannst Du im TypoScript die Funktion nutzen:
[isLoaded('some_extension')]
# My fancy TypoScript
[END]