Il y a quelques paramètres dans le ext_conf_template.txt de mon extension.

Je veux vérifier la valeur de l'un de ces paramètres, mais en typoscript, pas en PHP.

En PHP, cela fonctionne comme ceci:

unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['myExt'])

Comment dois-je faire cela en typoscript?

1
Marcus 21 avril 2017 à 11:33

3 réponses

Meilleure réponse

J'ai fait quelque chose de similaire dans mon extension d'extrait de code (voir code sur Github), où je viens d'ajouter un condition TypoScript personnalisée:

[DanielGoerz\FsCodeSnippet\Configuration\TypoScript\ConditionMatching\AllLanguagesCondition]
  // some conditional TS
[global]

L'implémentation de la condition est assez simple:

namespace DanielGoerz\FsCodeSnippet\Configuration\TypoScript\ConditionMatching;
use DanielGoerz\FsCodeSnippet\Utility\FsCodeSnippetConfigurationUtility;
use TYPO3\CMS\Core\Configuration\TypoScript\ConditionMatching\AbstractCondition;

class AllLanguagesCondition extends AbstractCondition
{
    /**
     * Check whether allLanguages is enabled
     * @param array $conditionParameters
     * @return bool
     */
    public function matchCondition(array $conditionParameters)
    {
        return FsCodeSnippetConfigurationUtility::isAllLanguagesEnabled();
    }
}

Et la vérification de la valeur TYPO3_CONF_VARS réelle est effectuée dans FsCodeSnippetConfigurationUtility:

namespace DanielGoerz\FsCodeSnippet\Utility;    
class FsCodeSnippetConfigurationUtility
{
    /**
     * @return array
     */
    private static function getExtensionConfiguration()
    {
        return unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['fs_code_snippet']);
    }
    /**
     * @return bool
     */
    public static function isAllLanguagesEnabled()
    {
        $conf = self::getExtensionConfiguration();
        return !empty($conf['enableAllLanguages']);
    }

}

Peut-être que cela correspond à vos besoins.

2
Daniel 21 avril 2017 à 10:02

Gérez la configuration via Extension Manager et appelez ExtensionManagementUtility::addTypoScriptConstants() dans votre ext_localconf.php pour définir une constante TypoScript au moment de l'exécution.

De cette façon, la valeur peut être définie à un emplacement et est disponible à la fois dans la configuration PHP de bas niveau et TypoScript.

2
Marcus 21 avril 2017 à 12:47

Grâce à la réponse de Marcus, j'ai pu obtenir un paramètre de configuration d'extension en typoscript. Créez d'abord le paramètre d'extension dans ext_conf_template.txt:

# cat=Storage; type=string; label=storageFolderPid
storageFolderPid = 1

Dans ext_local_conf.php, ajoutez les lignes suivantes:

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptConstants(
    "plugin.tx_extensionname.settings.storageFolderPid = ".$GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['extension']['storageFolderPid']
);

Ensuite, vous pouvez utiliser cette variable dans votre typographie, par exemple pour créer un sous-menu d'un dossier de stockage:

lib.submenu = CONTENT
lib.submenu {
    table = tx_extension_domain_model_article
    select {
        pidInList = {$plugin.tx_extensionname.settings.storageFolderPid}
        selectFields = tx_extensionname_domain_model_article.*
    }
    ...
}
1
DNAklik 29 mai 2020 à 08:29