首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在FE中包含条件的页面TSconfig

在FE中包含条件的页面TSconfig
EN

Stack Overflow用户
提问于 2018-02-05 16:49:23
回答 1查看 363关注 0票数 0

我正在使用TYPO3 v7.6,并试图用条件覆盖一些页面TSconfig,并将其放入FE中。

我所做的是,

代码语言:javascript
运行
复制
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig('<INCLUDE_TYPOSCRIPT: source="FILE:EXT:'.$_EXTKEY.'/Configuration/PageTSconfig/pageTSConfig.txt">');`

在我的扩展中的ext_localconf.php中。

pageTSConfig.txt

代码语言:javascript
运行
复制
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中的页面TSconfig。然而,FE中的$GLOBALS['TSFE']->pagesTSconfig()仅获取默认RTE.tinymce,而不获取页uid=26中被覆盖的one。我错过什么了吗?

顺便说一句,我试着将条件部分移动到uid=26页面的Page TSConfig框中,我可以在我的扩展中使用$GLOBALS['TSFE']->pagesTSconfig()来获得正确的TSconfig。

EN

Stack Overflow用户

发布于 2018-02-06 02:18:01

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

首先,将条件TSconfig移动到另一个文件中,并使用

代码语言:javascript
运行
复制
\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()

代码语言:javascript
运行
复制
/** @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][PIDupinRootline][PIDinRootline]都需要它工作。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48618681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档