Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

« Vorherige Version anzeigen Version 8 Nächste Version anzeigen »

Verwendung

Es sind 2 Implementationen notwendig, um sprechende URLs für eigene Logik zu verwenden.

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

MethodeSignaturBeschreibung
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

Beispiel shopGroup mit verschaltelten Gruppen
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 = '';
    }
  }
  • Keine Stichwörter