更改站点中某些页面的站点配置中的语言参数
Change language parameters in site configuration for some pages in a site
在 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 尚未呈现,因此无法使用错别字配置数组。
在 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 尚未呈现,因此无法使用错别字配置数组。