更改网站中某些页面的网站配置中的语言参数



TYPO3 10 LTS中是否有可能为单个页面更改站点配置中的选项fallbackType

背景:

我使用选项fallbackType fallback作为站点。但为了几页,我需要fallbackType strict。到TYPO3 8,这可以通过一个简单的扩展模板和不同的配置来实现。TYPO3 10有办法吗?

据我所知,不可能将TYPO3配置为以这种方式运行。覆盖单个页面的语言配置的唯一方法是自定义中间件。

您可以在这里找到一个工作示例:https://github.com/qbus-agentur/typo3-dynamic-language-mode.

我更改了主要功能:

public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
$lang = $this->getCurrentSiteLanguage($request);
$pageArguments = $this->getPageArguments($request);
if ($lang === null || $pageArguments === null) {
return $handler->handle($request);
}
// get current page ID
$currentRouting = $request->getAttribute('routing');
$currentPage = $currentRouting->getPageId();
$site = $request->getAttribute('site');
$default = $site->getLanguages()[0];
if ($lang->getLanguageId() !== $default->getLanguageId()) {
// Check if page is in $pagesWhereToChange and apply a dynamic language configuration in that case
if (in_array($currentPage, $this->pagesWhereToChange) > 0) {
Closure::bind(function() use ($lang, $newId) {
$lang->fallbackType = 'free';
$lang->fallbackLanguageIds = [];
}, null, SiteLanguage::class)();
}
}
return $handler->handle($request);
}

其中$this->pagesWhereToChange是一个页面数组:

/**
* pagesWhereToChange
*
* @var array
*/
protected $pagesWhereToChange = [30,41];

由于TSFE尚未渲染,因此无法使用打字脚本配置阵列。

最新更新