Moin, ich möchte nun für mein custom Storefront controller SEO Urls generieren. Leider finde ich nichts passendes in der Doku… Hat hier jemand einen Tip für mich?
VG Philipp
Moin, ich möchte nun für mein custom Storefront controller SEO Urls generieren. Leider finde ich nichts passendes in der Doku… Hat hier jemand einen Tip für mich?
VG Philipp
Ich habe letztens Seo Urls in unseren Covid-19 Projekt eingefügt. Kannst gern da abschauen: https://github.com/shopwareDowntown/downtown/commit/485078103f9bf75c2ed269e7e886abc997fc012f
Brauchst nur die SeoRoute Klasse und die jeweilige Config für das Admin
Okay danke soweit
Nun habe ich die Klassen angelegt und die Config in der Datenbank, jedoch scheint er hier Probleme mit der Validierung zu haben:
Woran könnte das liegen?
Die Entity ist: cogi_glossary
--> In den Beispielen habe ich aber nur Entities ohne Unterstich
Der Route-Name lautet: cogi-glossary.entry
--> vllt mag er den Bindestrich nicht?
glossaryDefinition = $glossaryDefinition;
$this->repository = $repository;
}
public function getConfig(): SeoUrlRouteConfig
{
return new SeoUrlRouteConfig(
$this->glossaryDefinition,
self::ROUTE_NAME,
self::DEFAULT_TEMPLATE
);
}
public function getMapping(Entity $glossary, ?SalesChannelEntity $salesChannel): SeoUrlMapping
{
if (!$glossary instanceof GlossaryEntity) {
throw new \InvalidArgumentException('Expected GlossaryEntity');
}
return new SeoUrlMapping(
$glossary,
['glossaryId' => $glossary->getId()],
[
'glossary' => $glossary->jsonSerialize(),
]
);
}
public function extractIdsToUpdate(EntityWrittenContainerEvent $event): SeoUrlExtractIdResult
{
$ids = [];
// check if a glossary was written. If this is the case, its Seo Url must be updated.
$glossaryEvent = $event->getEventByEntityName(GlossaryDefinition::ENTITY_NAME);
if ($glossaryEvent) {
$ids = $glossaryEvent->getIds();
}
return new SeoUrlExtractIdResult($ids);
}
public function prepareCriteria(Criteria $criteria): void
{
}
public function getSeoVariables(): array
{
return [];
}
}
Ahh okay, ich glaube ich weiß was es ist…
Some mandatory parameters are missing ("char", "cogiGlossaryId") to generate a URL for route "cogi-glossary.entry".
Im Controller muss firstChar
stehen, dann sollte es gehen.