---
title: "Feature: #86614 - Add PSR-14 event to control hreflang tags to be rendered"
manual: "TYPO3 Core Changelog"
version: "main"
permalink: "https://docs.typo3.org/permalink/changelog:feature-86614"
source: "Changelog/10.3/Feature-86614-AddHookBeforeRenderingHrefLang.rst"
modified: "2026-09-14T09:47:36+00:00"
---

# Feature: #86614 - Add PSR-14 event to control hreflang tags to be rendered

See [forge#86614](https://forge.typo3.org/issues/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`

```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`

```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');
    }
}
```
