我试图在我的 extbase 扩展的单一 View 中更改浏览器页面标题。我所有的尝试都失败了:
/**
* action show
*
* @param \Vendor\Abc\Domain\Model\Abc $record
* @return void
*/
public function showAction(\Vendor\Abc\Domain\Model\Abc $record) {
$this->view->assign('record', $record);
//$GLOBALS['TSFE']->page['title'] = $record->getAbc();
//$GLOBALS['TSFE']->indexedDocTitle = $record->getAbc();
//$GLOBALS['TSFE']->page['title'] = $record;
//$GLOBALS['TSFE']->indexedDocTitle = $record;
//$GLOBALS['TSFE']->additionalHeaderData['CustomUserIntTitle']
//= '<title>' . $this->getAbc($record) . '</title>';
//$myNewTitle = 'Title';
//$title = '<title>' . $myNewTitle . '</title>';
//$this->response->addAdditionalHeaderData($title);
//$GLOBALS['TSFE']->content = preg_replace('#<title>.*<\/title>#', '<title>' . $record->getTitle() . '</title>', $GLOBALS['TSFE']->content);
//$this->response->addAdditionalHeaderData('<title>Mein eigener Title</title>');
}
我将该操作注册为不可缓存(但不确定我是否真的必须这样做)
最佳答案
如果 TYPO3 >= 9 LTS 遵循:
https://stackoverflow.com/a/63745294/4533462
对于 TYPO3 <= 8 LTS,您可以这样做
Jan 的解决方案是更改依赖于 GET 参数或页面 ID 的常规方法。
当您尝试更改 Controller 内的标题时,取决于在 Typoscript 中设置页面标题的方式。但是,可以使用 PageRenderer 更改 Controller 内的标题:
$this->objectManager->get(\TYPO3\CMS\Core\Page\PageRenderer::class)->setTitle('My title');
// For the search
$GLOBALS['TSFE']->indexedDocTitle = 'My title';
如果它不能与 PageRenderer 一起使用,您必须在 Typoscript 中为您的页面标题进行特殊配置或其他扩展覆盖标题。
关于TYPO3 Extbase - 在单一 View 中更改浏览器页面标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42559617/