TYPO3 PageTitleProvider für eigene Extensions
Erstellen von eigenen PageTitleProvidern für TYPO3. Anwendungsfälle sind Erweiterungen, die eine einzelne Seite für die Darstellung verschiedener Inhalte verwenden wie z.b die Einzelansichten von News oder Blog-Posts.
Vorgehen:
Eine Klasse MyPageTitleProvider.php in myextension/Classes/PageTitle erstellen:
<?php namespace Rms\Blog; use TYPO3\CMS\Core\PageTitle\AbstractPageTitleProvider; class MyPageTitleProvider extends AbstractPageTitleProvider { /** * @param string $title */ public function setTitle(string $title) { $this->title = $title; } }
Danach wird der PageTitleProvider und bei mehrern Providern ggf. die Priorität in TypoScript konfiguriert
config.pageTitleProviders { custom { provider = Rms\Blog\MyPageTitleProvider before = pages after = altPageTitle } }
Nun kann der neue PageTitleProvider z.B. innerhalb einer show() Funktion verwendet werden, um den Default Page-Title zu überschreiben:
<?php class PostController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController { /** * action show * * @param \Rms\Blog\Domain\Model\Post $post * @return \Psr\Http\Message\ResponseInterface */ public function showAction(\Rms\Blog\Domain\Model\Post $post): \Psr\Http\Message\ResponseInterface { $titleProvider = GeneralUtility::makeInstance(\Rms\Blog\MyPageTitleProvider::class); $titleProvider->setTitle($post->getTitle()); $this->view->assign('post', $post); return $this->htmlResponse(); } }