Feature: #86614 - Add PSR-14 event to control hreflang tags to be rendered¶
See forge#86614
Description¶
It is now possible to alter the hreflang tags just before they
get rendered. You can do this by registering an event listener for
the event TYPO3\CMS\Frontend\Event\ModifyHrefLangTagsEvent
.
Also the class TYPO3\CMS\Seo\HrefLang\HrefLangGenerator
has been
refactored to be a listener (identifier 'typo3-seo/hreflangGenerator'
)
to the newly introduced event. This way the system extension seo still
provides hreflang tags but it is now possible to simply register
after or instead of the implementation.
Example¶
An example implementation could look like this:
EXT:my_extension/Configuration/Services.yaml
services:
Vendor\MyExtension\HrefLang\EventListener\OwnHrefLang:
tags:
- name: event.listener
identifier: 'my-ext/ownHrefLang'
after: 'typo3-seo/hreflangGenerator'
event: TYPO3\CMS\Frontend\Event\ModifyHrefLangTagsEvent
With after
and before
, you can make sure your own listener is
executed after or before the given identifiers.
EXT:my_extension/Classes/HrefLang/EventListener/OwnHrefLang.php
namespace Vendor\MyExtension\HrefLang\EventListener;
use TYPO3\CMS\Frontend\Event\ModifyHrefLangTagsEvent;
class OwnHrefLang
{
public function __invoke(ModifyHrefLangTagsEvent $event): void
{
$hrefLangs = $event->getHrefLangs();
$request = $event->getRequest();
// Do anything you want with $hrefLangs
$hrefLangs = [
'en-US' => 'https://example.com',
'nl-NL' => 'https://example.com/nl'
];
// Override all hrefLang tags
$event->setHrefLangs($hrefLangs);
// Or add a single hrefLang tag
$event->addHrefLang('de-DE', 'https://example.com/de');
}
}