Verwendung
Es sind 2 Implementationen notwendig, um sprechende URLs für eigene Logik zu verwenden.
Registrieren des Canonical Link
Ein Canonical Link muss über die linkTo-Methode des Realurl-Packages registriert werden:
use Brandbox\CmsCore\Cms\Realurl; private function linkTo(string $shortLink = 'basket', array $realUrlModels) { return $this ->getEngineRealUrl() ->linkTo($shortLink, $realUrlModels, true) ; } private function getEngineRealUrl() { return $this->staticController(Realurl\engine::class); }
$realUrlModels ist dabei ein Array aus Objekten, die das Interface Realurl\Lib\Interfaces\RealUrlInterface implementieren. Ein Objekt repräsentiert dabei immer einen genau eine Entity.
Interface \Brandbox\CmsCore\Cms\Realurl\Lib\Interfaces\RealUrlInterface
Methode | Signatur | Beschreibung |
---|---|---|
getCanonicalQuery | public function getCanonicalQuery(): string; | Liefert die relative Canonical-URL als String zurück |
getEntity | public function getEntity(): ?Dbal\Definition\EntityInterface; | Liefert das zu Grunde liegende Entity zurück |
getIdentification | public function getIdentification(): string; | Liefert einen identifizierenden String zurück. Dies wird pro Implementation benötigt, um unterschiedliche Implementationen für denselben Entity-Typ zu unterscheiden |
getParameters | public function getParameters(): array; | Liefert die Parameter als Name-Value-Paare zurück, die im Canonical URL-Datensatz gespeichert und beim Anwenden der Canonical URL als Request-Parameter zur Verfügung stehen sollen |
Validieren des Canonical Links
Code-Beispiele
Einfacher Link mit Shortling (cmsPageShortLink)
Links zu Datenmodels
use brandbox\cms\realurl; /** * @param int[] $groupIDs * * @return string */ public function get($groupIDs = []) { $groups = $this->getGroups($groupIDs); $contentType = $this ->getRepositoryShopGroup() ->getIdentifier() ; $realUrlModels = $this ->map() ->from($groups, true) // true = multiple ->withPropertyMap('contentID', 'id') ->withStaticMap('contentType', $contentType) ->to(group\lib\map\realUrlModel::class) ; return $this ->getEngineRealUrl() ->linkTo(self::SHORT_LINK, $realUrlModels) ; } private function getEngineRealUrl() { return $this->staticController(realurl\engine::class); } // group\lib\map\realUrl namespace brandbox\shop\group\lib\map { use brandbox\cms\realurl; /** * @author Christopher Holden <holden@konmedia.com> */ class realUrlModel extends realurl\lib\map\realurlModel { /** * @var string */ public $shopGroupName = ''; } }