具有FE条件的页面TSconfig

时间:2018-02-05 08:49:23

标签: typo3

我正在使用TYPO3 v7.6,并试图用条件覆盖某些页面TSconfig并在FE中获取它。

我做的是,

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig('<INCLUDE_TYPOSCRIPT: source="FILE:EXT:'.$_EXTKEY.'/Configuration/PageTSconfig/pageTSConfig.txt">');`

在我的扩展程序中的ext_localconf.php

pageTSConfig.txt

RTE.tinymce {
    menu = 0
    menubar = 0
    plugins = code link lists
    statusbar = 0
    toolbar {
        0 = bold italic | alignleft aligncenter | bullist numlist | undo redo | formatselect | link unlink | code
    }
}
[PIDinRootline = 26]
    RTE.tinymce {
        plugins = code link lists textcolor colorpicker
        toolbar {
            0 = bold italic | forecolor | alignleft aligncenter | bullist numlist | undo redo | formatselect | link unlink | code
        }
    }
[end]

条件适用于BE中的Page TSconfig。但是,FE中的$GLOBALS['TSFE']->pagesTSconfig()仅获取默认RTE.tinymce,而不是页面uid=26中的覆盖的Page TSConfig。我错过了什么吗?

BTW,我尝试将条件部分移动到页面uid=26中的$GLOBALS['TSFE']->pagesTSconfig()框中,我可以在扩展程序中使用{{1}}更正TSconfig。

1 个答案:

答案 0 :(得分:0)

可能的方式,但可能不是一个好方法。

首先,将条件TSconfig移动到另一个文件并加载

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig('<INCLUDE_TYPOSCRIPT: source="FILE:EXT:'.$_EXTKEY.'/Configuration/PageTSconfig/pageTSConfig2.txt" condition="[PIDinRootline = 26]">');`

查看https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.5/Feature-16525-AddConditionsToINCLUDE_TYPOSCRIPT.html

上的功能

然后更新\TYPO3\CMS\Core\TypoScript\Parser\TypoScriptParser->checkIncludeLines()

/** @var AbstractConditionMatcher $conditionMatcher */
$conditionMatcher = null;
if (TYPO3_REQUESTTYPE & TYPO3_REQUESTTYPE_FE) {
    $conditionMatcher = GeneralUtility::makeInstance(FrontendConditionMatcher::class);
} else {
    $conditionMatcher = GeneralUtility::makeInstance(BackendConditionMatcher::class);
}
// Make sure we can set the rootLine and pageId
if ($GLOBALS['TSFE']) {
    $conditionMatcher->setRootLine($GLOBALS['TSFE']->rootLine);
}

因此,[PIDinRootline = 26]将按预期工作,并相应地加载TSconfig。

if的原因是,在$conditionMatcher初始化时,未设置rootLine->match()将失败,因为[treeLevel],{{1} }和[PIDupinRootline]要求它起作用。

相关问题