ModifyHrefLangTagsEvent¶
バージョン 10.3 で追加.
- Event:
TYPO3\CMS\Frontend\Event\ModifyHrefLangTagsEvent
- Description:
- Event to alter the hreflang tags just before they get rendered.
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');
}
}
API¶
Method: getHrefLangs() Description: Returns the hreflang tags. ReturnType: array
Method: setHrefLangs() Description: Set the hreflang tags. Arguments: array $hrefLangs ReturnType: void
Method: addHrefLang()
Description: Add a hreflang tag to the current list of hreflang tags.
Arguments:
- string $languageCode The language of the hreflang tag you would like to add. For example: nl-NL
- string $url The URL of the translation. For example: https://example.com/nl
ReturnType: void
Method: getRequest() Description: Returns the current request. ReturnType: PsrHttpMessageServerRequestInterface