register_hook('TPL_TITLE_OUTPUT', 'BEFORE', $this, 'handleTitle', array()); } function handleTitle(&$event, $param) { $event->data = self::getHtmlTitle(); } static function getHtmlTitle(): string { // Page Title // Root Home page $currentPage = MarkupPath::createFromRequestedPage(); $pageTitle = $currentPage->getTitleOrDefault(); // Namespace name try { $parentPage = $currentPage->getParent(); $pageTitle .= self::TITLE_SEPARATOR . $parentPage->getNameOrDefault(); } catch (ExceptionNotFound $e) { // no parent } // Site name if (!empty(Site::getName())) { $pageTitle .= self::TITLE_SEPARATOR . Site::getName(); } return Html::encode($pageTitle); } }