TYPO3 Extbase - 在单一 View 中更改浏览器页面标题

标签 typo3 extbase typo3-7.6.x

我试图在我的 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/

相关文章:

TYPO3-6.2 Extbase 自定义内容类型 -> 无效值

TYPO3 Extbase storagePid

php - TYPO3:创建新元素时重命名所有实体

php - TYPO3 中的 FlexForm 未显示可切换 Controller 操作中的元素

TYPO3:USER_INT 是什么意思?

typo3 - tx_news 类别菜单不过滤新闻- TYPO3

typo3 - 将 typescript 参数发送到 userFunc

typo3 - 如何在 TYPO3 中启用错误报告?

typo3 - Powermail 不发送邮件

typo3 - 在 TYPO3 后端的页面 View 中显示列表