ModifyUrlForCanonicalTagEvent

With the PSR-14 event \TYPO3\CMS\Seo\Event\ModifyUrlForCanonicalTagEvent the URL for the href attribute of the canonical tag can be altered or emptied.

New in version 12.4.9

The methods getRequest() and getPage() have been added.

Changed in version 13.0

The event is being dispatched after the standard functionality has been executed, such as fetching the URL from the page properties. Effectively, this also means that getUrl() might already return a non-empty string.

Example

Changing the host of the current request and setting it as canonical:

EXT:my_extension/Classes/Seo/EventListener/MyEventListener.php
<?php

declare(strict_types=1);

namespace MyVendor\MyExtension\Seo\EventListener;

use TYPO3\CMS\Core\Attribute\AsEventListener;
use TYPO3\CMS\Seo\Event\ModifyUrlForCanonicalTagEvent;
use TYPO3\CMS\Seo\Exception\CanonicalGenerationDisabledException;

#[AsEventListener(
    identifier: 'my-extension/modify-url-for-canonical-tag',
)]
final readonly class MyEventListener
{
    public function __invoke(ModifyUrlForCanonicalTagEvent $event): void
    {
        if ($event->getCanonicalGenerationDisabledException() instanceof CanonicalGenerationDisabledException) {
            return;
        }

        // Only set the canonical in our example when the tag is not disabled
        // via TypoScript or via "no_index" in the page properties.
        $currentUrl = $event->getRequest()->getUri();
        $newCanonical = $currentUrl->withHost('example.com');
        $event->setUrl((string)$newCanonical);
    }
}
Copied!

New in version 13.0

The PHP attribute \TYPO3\CMS\Core\Attribute\AsEventListener has been introduced to tag a PHP class as an event listener. Alternatively, or if you need to be compatible with older TYPO3 versions, you can also register an event listener via the Configuration/Services.yaml file. Switch to an older version of this page for an example or have a look at the section Implementing an event listener in your extension.

API

class \TYPO3\CMS\Seo\Event\ ModifyUrlForCanonicalTagEvent

PSR-14 event to alter (or empty) a canonical URL for the href="" attribute of a canonical URL.

getUrl ( )
returntype

string

setUrl ( string $url)
param string $url

the url

getRequest ( )
returntype

Psr\Http\Message\ServerRequestInterface

getPage ( )
returntype

TYPO3\CMS\Core\Domain\Page

getCanonicalGenerationDisabledException ( )
returntype

TYPO3\CMS\Seo\Exception\CanonicalGenerationDisabledException