在我的扩展程序中,我正在使用自定义PageTitleProvider用于我的详细信息视图。它仅在未缓存页面时有效。因此,我清除了缓存,然后当我重新加载页面时,标题将成为记录的名称。由于加载时间的原因,我无法将操作设置为未缓存。
我的PageTitleProvider看起来像这样:
use TYPO3\CMS\Core\PageTitle\AbstractPageTitleProvider;
class CatalogPageTitleProvider extends AbstractPageTitleProvider
{
/**
* @param string $title
*/
public function setTitle(string $title)
{
$this->title = (string)$title.' | '.$GLOBALS['TSFE']->rootLine[0]['title'] ;
}
}
在控制器中,我这样设置标题:
$search = ['&npsp;', '­' ];
$titleProvider = GeneralUtility::makeInstance(CatalogPageTitleProvider::class);
$titleProvider->setTitle( strip_tags(str_replace( $search, '', $service->getName())));
任何人都知道是否缺少某些东西,或者这是一个已知的错误吗?
最好的问候死诺尔
[大约一年前有一个错误修正,目的是删除元标记和页面标题的单独缓存:https://git.higidi.com/TYPO3/TYPO3.CMS/commit/44fe4992172ec0e18b28bc4a24c57a5c93b74121从错误修正说明:
根据前端渲染的概念,页面标题和元标记不是旨在存储在页面缓存中以允许不可缓存插件来修改它们。
当前页面标题和元标记都存储在单独的缓存中条目,它违反了上面的概念并且不必要地紧紧地将这些代码部分耦合到TypoScriptFrontendController和它的内部逻辑。
此补丁删除了这些缓存。
此修复程序在9.5.8版中引入。
我在项目中将脚本还原为9.5.7版,并且页面标题再次正确:https://github.com/TYPO3/TYPO3.CMS/blob/v9.5.7/typo3/sysext/core/Classes/PageTitle/PageTitleProviderManager.php
虽然必须有一种更清洁的方法来执行此操作,但是我还没有找到。